VAST SPACE ARCHIVES: Beeleth Wiki
vastwiki
https://vast.miraheze.org/wiki/BEELETH_Wiki
MediaWiki 1.40.1
first-letter
Media
Special
Talk
User
User talk
VAST SPACE ARCHIVES: Beeleth Wiki
VAST SPACE ARCHIVES: Beeleth Wiki talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
UserWiki
UserWiki talk
User profile
User profile talk
Campaign
Campaign talk
TimedText
TimedText talk
Module
Module talk
Template:Div col end
10
209
415
2015-10-03T15:58:07Z
beeleth>NeilN
0
Changed protection level of Template:Div col end: per request at [[WP:RFPP]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{Documentation|Template:Div col/doc}}
</noinclude>
78088d41c21d779e3722f220fcc9773dfbbc1e4f
Template:Yesno-no
10
210
417
2018-02-13T20:27:17Z
beeleth>WOSlinker
0
separate pp-template not needed
wikitext
text/x-wiki
{{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
1ad7b7800da1b867ead8f6ff8cef76e6201b3b56
Template:Distinguish
10
190
375
2018-03-03T23:40:51Z
beeleth>Plastikspork
0
[[Wikipedia:Templates for discussion/Log/2018 February 19#Template:Distinguish2]] closed as merge ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
{{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. -->
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
f949a4cbfd6eb0ab77b832e69059a40a964b1fd8
Module:Distinguish
828
192
379
2018-04-01T10:06:10Z
beeleth>Galobtter
0
fixed with text and selfref
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools --initialize lazily
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.distinguish(frame)
mArguments = require('Module:Arguments')
mTableTools = require('Module:TableTools')
local args = mArguments.getArgs(frame)
local selfref = args.selfref
local text = args.text
args = mTableTools.compressSparseArray(args)
return p._distinguish(args, text, selfref)
end
function p._distinguish(args, text, selfref)
checkType("_distinguish", 1, args, 'table')
if #args == 0 and not text then return '' end
local text = string.format(
'Not to be confused with %s.',
text or mHatlist.orList(args, true)
)
hnOptions = {selfref = selfref}
return mHatnote._hatnote(text, hnOptions)
end
return p
0364d14af01fc656ad1d898c5036fbd12a7ca938
Module:Citation
828
319
627
2018-05-21T11:38:53Z
vast>Pppery
0
Rm unreachable code
Scribunto
text/plain
error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].')
b09b01dacd314f37060769a4fc6b8f027c247b86
Template:Infobox
10
169
331
2018-08-15T18:33:36Z
beeleth>Primefac
0
Undid revision 855063393 by [[Special:Contributions/Jdlrobson|Jdlrobson]] ([[User talk:Jdlrobson|talk]]) rather problematic change mentioned [[Template_talk:Infobox#Using_template_styles_to_reduce_technical_debt_inside_mobile_skin|on talk page]], reverting until it can be sorted
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
Template:Nobold
10
179
351
2018-10-23T17:15:13Z
beeleth>Frietjes
0
wikitext
text/x-wiki
<templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
9c92b5951772bb26ca0fbe9256418b65e47700dd
Template:Template other
10
189
371
2018-12-16T22:06:25Z
beeleth>Amorymeltzer
0
Changed protection level for "[[Template:Template other]]": [[WP:High-risk templates|Highly visible template]]: Transclusion count has increased dramatically ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Template:Nobold/styles.css
10
180
353
2019-03-03T23:43:41Z
beeleth>Pppery
0
Adding protection template
text
text/plain
/* {{pp-template}} */
/* Styling for Template:Nobold */
.nobold {
font-weight: normal;
}
83e5f0adacf8c7984251f1fd9d11ed82ebaadf03
Template:Lua
10
226
451
2019-03-20T22:04:45Z
beeleth>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7
Template:Clc
10
236
471
2019-04-24T04:30:59Z
beeleth>JJMC89
0
actual template is in the category
wikitext
text/x-wiki
#REDIRECT [[Template:Category link with count]]
02280e2ab57b544236e11f913e3759c5781ca9d5
Module:Parameter names example
828
225
449
2020-03-26T04:07:47Z
beeleth>Andrybak
0
add popular variants of demonstration purposes parameters: nocat=yes, categories=no, and demo=yes
Scribunto
text/plain
-- This module implements {{parameter names example}}.
local p = {}
local function makeParam(s)
local lb = '{'
local rb = '}'
return lb:rep(3) .. s .. rb:rep(3)
end
local function italicize(s)
return "''" .. s .. "''"
end
local function plain(s)
return s
end
function p._main(args, frame)
-- Find how we want to format the arguments to the template.
local formatFunc
if args._display == 'italics' or args._display == 'italic' then
formatFunc = italicize
elseif args._display == 'plain' then
formatFunc = plain
else
formatFunc = makeParam
end
-- Build the table of template arguments.
local targs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
targs[v] = formatFunc(v)
elseif not k:find('^_') then
targs[k] = v
end
end
targs['nocat'] = 'yes';
targs['categories'] = 'no';
targs['demo'] = 'yes';
-- Find the template name.
local template
if args._template then
template = args._template
else
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.prefixedText:find('/sandbox$') then
template = currentTitle.prefixedText
else
template = currentTitle.basePageTitle.prefixedText
end
end
-- Call the template with the arguments.
frame = frame or mw.getCurrentFrame()
local success, result = pcall(
frame.expandTemplate,
frame,
{title = template, args = targs}
)
if success then
return result
else
return ''
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Parameter names example'
})
return p._main(args, frame)
end
return p
576eb8298850f4e4e62105ac740df295b7b7eb9e
Template:Ombox
10
234
467
2020-04-01T06:12:36Z
beeleth>MusikAnimal
0
1 revision imported
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0e54065432d540737b9e56c4e3a8e7f74d4534ea
Module:Arguments
828
172
337
2020-04-01T06:12:40Z
beeleth>MusikAnimal
0
1 revision imported
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Module:Yesno
828
171
335
2020-04-01T06:27:55Z
beeleth>MusikAnimal
0
Undid revision 948472533 by [[Special:Contributions/w>Vogone|w>Vogone]] ([[User talk:w>Vogone|talk]])
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:File link
828
195
385
2020-04-01T06:31:54Z
beeleth>MusikAnimal
0
Undid revision 948472508 by [[Special:Contributions/w>IPad365|w>IPad365]] ([[User talk:w>IPad365|talk]])
Scribunto
text/plain
-- This module provides a library for formatting file wikilinks.
local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our
-- own function to get the right error level.
local function checkArg(key, val, level)
if type(val) ~= 'string' then
error(string.format(
"type error in '%s' parameter of '_main' (expected string, got %s)",
key, type(val)
), level)
end
end
local ret = {}
-- Adds a positional parameter to the buffer.
local function addPositional(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = val
end
-- Adds a named parameter to the buffer. We assume that the parameter name
-- is the same as the argument key.
local function addNamed(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = key .. '=' .. val
end
-- Filename
checkArg('file', args.file, 3)
ret[#ret + 1] = 'File:' .. args.file
-- Format
if args.format then
checkArg('format', args.format)
if args.formatfile then
checkArg('formatfile', args.formatfile)
ret[#ret + 1] = args.format .. '=' .. args.formatfile
else
ret[#ret + 1] = args.format
end
end
-- Border
if yesno(args.border) then
ret[#ret + 1] = 'border'
end
addPositional('location')
addPositional('alignment')
addPositional('size')
addNamed('upright')
addNamed('link')
addNamed('alt')
addNamed('page')
addNamed('class')
addNamed('lang')
addNamed('start')
addNamed('end')
addNamed('thumbtime')
addPositional('caption')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:File link'
})
if not origArgs.file then
error("'file' parameter missing from [[Template:File link]]", 0)
end
-- Copy the arguments that were passed to a new table to avoid looking up
-- every possible parameter in the frame object.
local args = {}
for k, v in pairs(origArgs) do
-- Make _BLANK a special argument to add a blank parameter. For use in
-- conditional templates etc. it is useful for blank arguments to be
-- ignored, but we still need a way to specify them so that we can do
-- things like [[File:Example.png|link=]].
if v == '_BLANK' then
v = ''
end
args[k] = v
end
return p._main(args)
end
return p
66925f088d11530f2482f04181a3baaaa0ad3d0c
Template:Sandbox other
10
215
429
2020-04-03T00:08:09Z
beeleth>Evad37
0
Also match subpage names beginning with "sandbox", per [[Template_talk:Sandbox_other#Template-protected_edit_request_on_28_March_2020|edit request]]
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
91e4ae891d6b791615152c1fbc971414961ba872
Template:Tlf
10
218
435
2020-04-13T14:42:57Z
beeleth>Primefac
0
Primefac moved page [[Template:Tlf]] to [[Template:Template link with link off]]: full name to indicate what it does
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with link off]]
{{Redirect category shell|
{{R from move}}
}}
52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf
Template:Sidebar
10
191
377
2020-06-04T02:43:13Z
beeleth>Primefac
0
TFD closed as keep ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
{{#invoke:Sidebar|sidebar}}<noinclude>
{{documentation}}</noinclude>
ab2498000a99daf324f656b0badd187b4a3e2b42
Template:Uses TemplateStyles
10
239
477
2020-06-21T18:00:10Z
beeleth>MusikBot II
0
Protected "[[Template:Uses TemplateStyles]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude>
{{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
7e26d8f257e302bd8a3dcbe53f52741ae0884f74
Module:String
828
182
357
2020-08-02T15:49:42Z
beeleth>RexxS
0
separate annotations for str.match from those for str._match
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Template:Yesno
10
177
347
2020-08-28T03:15:17Z
beeleth>Xaosflux
0
add additional paramerters, "t", "f" - requested on talk - worked in sandbox /testcases
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
629c2937bc5cf7cfe13cd2a598582af832782399
Module:TNT
828
235
469
2020-08-30T07:28:25Z
beeleth>Johnuniq
0
Changed protection level for "[[Module:TNT]]": [[WP:High-risk templates|High-risk Lua module]]: per request at [[WP:RFPP]] to match [[Module:Excerpt]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
--
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)
-- This module allows any template or module to be copy/pasted between
-- wikis without any translation changes. All translation text is stored
-- in the global Data:*.tab pages on Commons, and used everywhere.
--
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules
--
-- ATTENTION:
-- Please do NOT rename this module - it has to be identical on all wikis.
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT
-- Please do not modify it anywhere else, as it may get copied and override your changes.
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT
--
-- DESCRIPTION:
-- The "msg" function uses a Commons dataset to translate a message
-- with a given key (e.g. source-table), plus optional arguments
-- to the wiki markup in the current content language.
-- Use lang=xx to set language. Example:
--
-- {{#invoke:TNT | msg
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
-- {{#invoke:TNT | doc | Graph:Lines }}
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab
-- if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
-- Forward declaration of the local functions
local sanitizeDataset, loadData, link, formatMessage
function p.msg(frame)
local dataset, id
local params = {}
local lang = nil
for k, v in pairs(frame.args) do
if k == 1 then
dataset = mw.text.trim(v)
elseif k == 2 then
id = mw.text.trim(v)
elseif type(k) == 'number' then
table.insert(params, mw.text.trim(v))
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
end
end
return formatMessage(dataset, id, params, lang)
end
-- Identical to p.msg() above, but used from other lua modules
-- Parameters: name of dataset, message key, optional arguments
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.format(dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
return formatMessage(dataset, key, {...})
end
-- Identical to p.msg() above, but used from other lua modules with the language param
-- Parameters: language code, name of dataset, message key, optional arguments
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.formatInLanguage(lang, dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('formatInLanguage', 1, lang, 'string')
checkType('formatInLanguage', 2, dataset, 'string')
checkType('formatInLanguage', 3, key, 'string')
return formatMessage(dataset, key, {...}, lang)
end
-- Obsolete function that adds a 'c:' prefix to the first param.
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'
function p.link(frame)
return link(frame.args[1])
end
function p.doc(frame)
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})
end
function p.getTemplateData(dataset)
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
local names = {}
for _, field in pairs(data.schema.fields) do
table.insert(names, field.name)
end
local params = {}
local paramOrder = {}
for _, row in pairs(data.data) do
local newVal = {}
local name = nil
for pos, val in pairs(row) do
local columnName = names[pos]
if columnName == 'name' then
name = val
else
newVal[columnName] = val
end
end
if name then
params[name] = newVal
table.insert(paramOrder, name)
end
end
-- Work around json encoding treating {"1":{...}} as an [{...}]
params['zzz123']=''
local json = mw.text.jsonEncode({
params=params,
paramOrder=paramOrder,
description=data.description
})
json = string.gsub(json,'"zzz123":"",?', "")
return json
end
-- Local functions
sanitizeDataset = function(dataset)
if not dataset then
return nil
end
dataset = mw.text.trim(dataset)
if dataset == '' then
return nil
elseif string.sub(dataset,-4) ~= '.tab' then
return dataset .. '.tab'
else
return dataset
end
end
loadData = function(dataset, lang)
dataset = sanitizeDataset(dataset)
if not dataset then
error(formatMessage(i18nDataset, 'error_no_dataset', {}))
end
-- Give helpful error to thirdparties who try and copy this module.
if not mw.ext or not mw.ext.data or not mw.ext.data.get then
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)
end
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Missing Commons dataset ' .. i18nDataset)
else
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))
end
end
return data
end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
link = function(dataset)
return 'c:Data:' .. mw.text.trim(dataset or '')
end
formatMessage = function(dataset, key, params, lang)
for _, row in pairs(loadData(dataset, lang).data) do
local id, msg = unpack(row)
if id == key then
local result = mw.message.newRawMessage(msg, unpack(params or {}))
return result:plain()
end
end
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Invalid message key "' .. key .. '"')
else
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))
end
end
return p
9d0d10e54abd232c806dcabccaf03e52858634a1
Module:Effective protection level
828
194
383
2020-09-29T03:38:47Z
beeleth>Jackmcbarn
0
bring in changes from sandbox
Scribunto
text/plain
local p = {}
-- Returns the permission required to perform a given action on a given title.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local level = mw.ext.FlaggedRevs.getStabilitySettings(title)
level = level and level.autoreview
if level == 'review' then
return 'reviewer'
elseif level ~= '' then
return level
else
return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review
end
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then
error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 )
end
if title.namespace == 8 then -- MediaWiki namespace
if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page
return 'interfaceadmin'
else -- any non-JS/CSS MediaWiki page
return 'sysop'
end
elseif title.namespace == 2 and title.isSubpage then
if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page
return 'interfaceadmin'
elseif title.contentModel == 'json' then -- user JSON page
return 'sysop'
end
end
if action == 'undelete' then
return 'sysop'
end
local level = title.protectionLevels[action] and title.protectionLevels[action][1]
if level == 'sysop' or level == 'editprotected' then
return 'sysop'
elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page
return 'sysop'
elseif level == 'templateeditor' then
return 'templateeditor'
elseif action == 'move' then
local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.
if blacklistentry and not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif title.namespace == 6 then
return 'filemover'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
end
local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
if blacklistentry then
if not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason
return 'autoconfirmed'
elseif level then
return level
elseif action == 'upload' then
return 'autoconfirmed'
elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts
return 'user'
else
return '*'
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
70256a489edf6be9808031b14a7e3ef3e025da97
Module:Documentation/styles.css
828
214
427
2020-11-19T20:21:58Z
beeleth>Izno
0
Changed protection level for "[[Module:Documentation/styles.css]]": actually match module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
text
text/plain
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
Template:Tlx
10
186
365
2020-11-20T18:53:35Z
beeleth>Primefac
0
Primefac moved page [[Template:Tlx]] to [[Template:Template link expanded]] over redirect: expand name, make it more obvious
wikitext
text/x-wiki
#REDIRECT [[Template:Template link expanded]]
{{Redirect category shell|
{{R from move}}
}}
1fec988ceb46cb324af228aac45d7cd25fcc9008
Template:Template link expanded
10
187
367
2020-11-21T12:04:41Z
beeleth>Primefac
0
update
wikitext
text/x-wiki
{{#Invoke:Template link general|main|code=on}}<noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlx}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
6c99696fee02f1da368ed20d2504e19bc15b1c13
Template:Template link with link off
10
217
433
2020-11-21T12:06:17Z
beeleth>Primefac
0
update
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlf}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851
Template:Div col/styles.css
10
208
413
2021-01-05T04:54:19Z
beeleth>Izno
0
remove the note as not generally necessary
text
text/plain
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc
Template:Tl
10
173
339
2021-02-12T22:03:00Z
beeleth>Anthony Appleyard
0
Anthony Appleyard moved page [[Template:Tl]] to [[Template:Template link]]: [[Special:Permalink/1006428669|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Redirect category shell|
{{R from move}}
}}
d6593bb3b4a866249f55d0f34b047a71fe1f1529
Template:Div col
10
207
411
2021-02-14T23:20:57Z
beeleth>Matt Fitzpatrick
0
whitelist parameter class
wikitext
text/x-wiki
<includeonly><templatestyles src="Div col/styles.css"/><!--
--><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!--
-->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!--
-->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!--
-->}}><!--
-->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes
-->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!--
--></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude>
{{Documentation}}
</noinclude>
6e84133dd867d6c701e7b161878cf66665bb7eb7
Template:Template link
10
174
341
2021-03-25T19:03:22Z
beeleth>Izno
0
[[Wikipedia:Templates for discussion/Log/2021 March 18#Template:Tlu]] closed as keep ([[WP:XFDC#4.0.11|XFDcloser]])
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eabbec62efe3044a98ebb3ce9e7d4d43c222351d
Template:Category link with count
10
228
455
2021-06-11T18:13:44Z
beeleth>GKFX
0
Support wider range of (valid) input format
wikitext
text/x-wiki
[[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!--
-->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!--
-->]] ({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude>
{{Documentation}}
</noinclude>
f93f1540b8c157703bd6d24ae35c35bef745981d
Module:Hatnote/styles.css
828
197
391
2021-07-12T19:22:27Z
beeleth>Izno
0
per my talk page
text
text/plain
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
44680ffd6e888866df2cdfa0341af9c7b97da94c
Module:Sidebar/configuration
828
205
407
2021-08-02T20:36:03Z
beeleth>Izno
0
wraplinks work like it used to
Scribunto
text/plain
return {
i18n = {
child_yes = 'yes',
float_none = 'none',
float_left = 'left',
wrap_true = 'true',
navbar_none = 'none',
navbar_off = 'off',
default_list_title = 'List',
title_not_to_add_navbar = 'Template:Sidebar',
collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists',
templatestyles = 'Module:Sidebar/styles.css',
category = {
child = '[[Category:Pages using sidebar with the child parameter]]',
conversion = '[[Category:Sidebars with styles needing conversion]]'
},
pattern = {
collapse_sandbox = '/sandbox$',
sandbox = '/sandbox$',
subgroup = 'sidebar%-subgroup',
style_conversion = 'style$',
uncategorized_conversion_titles = {
'/[Ss]andbox',
'/[Tt]estcases',
'/[Dd]oc$'
}
},
class = {
sidebar = 'sidebar',
subgroup = 'sidebar-subgroup',
collapse = 'sidebar-collapse',
float_none = 'sidebar-none',
float_left = 'sidebar-left',
wraplinks = 'nowraplinks',
outer_title = 'sidebar-outer-title',
top_image = 'sidebar-top-image',
top_caption = 'sidebar-top-caption',
pretitle = 'sidebar-pretitle',
pretitle_with_top_image = 'sidebar-pretitle-with-top-image',
title = 'sidebar-title',
title_with_pretitle = 'sidebar-title-with-pretitle',
image = 'sidebar-image',
caption = 'sidebar-caption',
above = 'sidebar-above',
heading = 'sidebar-heading',
content = 'sidebar-content',
content_with_subgroup = 'sidebar-content-with-subgroup',
below = 'sidebar-below',
navbar = 'sidebar-navbar',
list = 'sidebar-list',
list_title = 'sidebar-list-title',
list_title_centered = 'sidebar-list-title-c',
list_content = 'sidebar-list-content'
}
}
}
069f50eb6a0f1833c7d37d07016b05305b5ed00c
Template:Album
10
3
4
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Album">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="artist"><label>Artist</label></data>
<data source="released"><label>Released</label></data>
<data source="recorded"><label>Recorded</label></data>
<data source="length"><label>Length</label></data>
<data source="label"><label>Label</label></data>
<data source="producer"><label>Producer</label></data>
</infobox></includeonly><noinclude>{{Documentation}}</noinclude>
7145bd5ecd9bcafcf1907686b6a57145c9c894ac
Template:Album/doc
10
4
6
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Album
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| artist =
| released =
| recorded =
| length =
| label =
| producer =
}}
</pre>
== Sample output ==
{{Album
| title = Fleur
| image = Example.jpg
| artist = Marigold
| released = June 2012
| recorded = 2011
| length = 88:88
| label = Spring
| producer = Daffy
}}
<pre>
{{Album
| title = Fleur
| image = Example.jpg
| artist = Marigold
| released = June 2012
| recorded = 2011
| length = 88:88
| label = Spring
| producer = Daffy
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
34c5cd77d0a20c3509b82f0386c7429a8b47a5fb
Template:Documentation
10
5
8
2021-08-16T20:00:48Z
FANDOM
3
Draft subpages are deprecated with UCP. Default is "/sandbox".
wikitext
text/x-wiki
<includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary"
|- style="font-size:18px;"
! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div>
|-
| ''Note: portions of the template sample may not be visible without values provided.''
|-
| View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]])
|-
| Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages.
|}
<div style="margin:0 1em;">
{{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude>
ee98b7264ecdfefae4fda4e94a64c1d0e275ee55
Template:T
10
6
10
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<onlyinclude><nowiki>{{</nowiki>{{#if:{{{prefix|}}}|{{{prefix}}}:}}[[Template:{{{1}}}|{{{1}}}]]<!--
-->{{#if:{{{2|}}}||<span style="color:#555;">''<{{{2}}}>''</span>}}<!--
-->{{#if:{{{3|}}}||<span style="color:#555;">''<{{{3}}}>''</span>}}<!--
-->{{#if:{{{4|}}}||<span style="color:#555;">''<{{{4}}}>''</span>}}<!--
-->{{#if:{{{5|}}}||<span style="color:#555;">''<{{{5}}}>''</span>}}<!--
-->{{#if:{{{6|}}}||<span style="color:#555;">''<{{{6}}}>''</span>}}<!--
-->{{#if:{{{7|}}}||<span style="color:#555;">''<{{{7}}}>''</span>}}<!--
-->{{#if:{{{8|}}}||<span style="color:#555;">''<{{{8}}}>''</span>}}<!--
-->{{#if:{{{9|}}}||<span style="color:#555;">''<{{{9}}}>''</span>}}<!--
-->{{#if:{{{10|}}}||<span style="color:#555;">''<{{{10}}}>''</span>}}<!--
-->{{#if:{{{11|}}}||<span style="color:#555;">''<{{{11}}}>''</span>}}<!--
-->{{#if:{{{12|}}}||<span style="color:#555;">''<{{{12}}}>''</span>}}<!--
-->{{#if:{{{13|}}}||<span style="color:#555;">''<{{{13}}}>''</span>}}<!--
-->{{#if:{{{14|}}}||<span style="color:#555;">''<{{{14}}}>''</span>}}<!--
-->{{#if:{{{15|}}}||<span style="color:#555;">''<{{{15}}}>''</span>}}<!--
-->{{#if:{{{16|}}}||<span style="color:#555;">''<{{{16}}}>''</span>}}<!--
-->{{#if:{{{17|}}}||<span style="color:#555;">''<{{{17}}}>''</span>}}<!--
-->{{#if:{{{18|}}}||<span style="color:#555;">''<{{{18}}}>''</span>}}<!--
-->{{#if:{{{19|}}}||<span style="color:#555;">''<{{{19}}}>''</span>}}<!--
-->{{#if:{{{20|}}}||<span style="color:#555;">''<{{{20}}}>''</span>}}<!--
-->{{#if:{{{21|}}}||<span style="color:#555;">''<{{{21}}}>''</span>}}<!--
--><nowiki>}}</nowiki></onlyinclude><noinclude>{{documentation}}</noinclude>
4273916fece7a96eef48125efb615009a1fd6fe6
Template:Documentation/doc
10
7
12
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
==Description==
This template is used to insert descriptions on template pages.
==Syntax==
Add <code><nowiki><noinclude></nowiki>{{t|Documentation}}<nowiki></noinclude></nowiki></code> at the end of the template page.
Add <code><nowiki><noinclude></nowiki>{{t|Documentation|documentation page}}<nowiki></noinclude></nowiki></code> to transclude an alternative page from the /doc subpage.
==Usage==
===On the Template page===
This is the normal format when used:
<pre>
TEMPLATE CODE
<includeonly>Any categories to be inserted into articles by the template</includeonly>
<noinclude>{{Documentation}}</noinclude>
</pre>
''If your template is not a completed div or table, you may need to close the tags just before <code><nowiki>{{Documentation}}</nowiki></code> is inserted (within the noinclude tags).''
''A line break right before <code><nowiki>{{Documentation}}</nowiki></code> can also be useful as it helps prevent the documentation template "running into" previous code.''
===On the documentation page===
The documentation page is usually located on the /doc subpage for a template, but a different page can be specified with the first parameter of the template (see [[#Syntax|Syntax]]).
Normally, you will want to write something like the following on the documentation page:
<pre>
==Description==
This template is used to do something.
==Syntax==
Type <code>{{t|templatename}}</code> somewhere.
==Samples==
<code><nowiki>{{templatename|input}}</nowiki></code>
results in...
{{templatename|input}}
<includeonly>Any categories for the template itself</includeonly>
<noinclude>[[Category:Template documentation]]</noinclude>
</pre>
Use any or all of the above description/syntax/sample output sections. You may also want to add "see also" or other sections.
Note that the above example also uses the [[Template:T]] template.
<includeonly>[[Category:Documentation templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
58ca364cb71b551e4a71ddf3046cf41c84db0d57
Template:T/doc
10
8
14
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
A template link with a variable number of parameters (0-20).
;Syntax
:{{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}} <!-- self-referential examples! -->
;Source
:Improved version not needing t/piece subtemplate developed on [http://templates.fandom.com Templates wiki] see the [http://templates.fandom.com/index.php?title=Template:T&action=history list of authors]. Copied here via CC-By-SA 3.0 license.
;Example
:{{t|t|param1|param2}}
<includeonly>[[Category:General wiki templates]]</includeonly>
<noinclude>[[Category:Template documentation]]</noinclude>
6f7307b6bcfef75efcc1d71fc932366c04cd61b3
Template:Character
10
9
16
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Character">
<title source="name"/>
<image source="image">
<caption source="imagecaption" />
</image>
<group>
<data source="aliases"><label>Aliases</label></data>
<data source="relatives"><label>Relatives</label></data>
<data source="affiliation"><label>Affiliation</label></data>
<data source="occupation"><label>Occupation</label></data>
</group>
<group>
<header>Biographical information</header>
<data source="marital"><label>Marital status</label></data>
<data source="birthDate"><label>Date of birth</label></data>
<data source="birthPlace"><label>Place of birth</label></data>
<data source="deathDate"><label>Date of death</label></data>
<data source="deathPlace"><label>Place of death</label></data>
</group>
<group>
<header>Physical description</header>
<data source="species"><label>Species</label></data>
<data source="gender"><label>Gender</label></data>
<data source="height"><label>Height</label></data>
<data source="weight"><label>Weight</label></data>
<data source="eyes"><label>Eye color</label></data>
</group>
<group>
<header>Appearances</header>
<data source="portrayedby"><label>Portrayed by</label></data>
<data source="appearsin"><label>Appears in</label></data>
<data source="debut"><label>Debut</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
f63ba56dbc9f4a25683ff5d7104509d0e8bb9eda
Template:Character/doc
10
10
18
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Character
| name =
| image =
| imagecaption =
| aliases =
| relatives =
| affiliation =
| occupation =
| marital =
| birthDate =
| birthPlace =
| deathDate =
| deathPlace =
| species =
| gender =
| height =
| weight =
| eyes =
| portrayedby =
| appearsin =
| debut =
}}
</pre>
== Sample output ==
{{Character
| name = Flowa
| image = Example.jpg
| imagecaption = Flowa, at rest
| aliases = Flo
| relatives =
| affiliation =
| occupation =
| marital =
| birthDate = July 21st, 2013
| birthPlace = Iowa
| deathDate =
| deathPlace =
| species = Plant
| gender =
| height =
| weight =
| eyes =
| portrayedby =
| appearsin =
| debut =
}}
<pre>
{{Character
| name = Flowa
| image = Example.jpg
| imagecaption = Flowa, at rest
| aliases = Flo
| relatives =
| affiliation =
| occupation =
| marital =
| birthDate = July 21st, 2013
| birthPlace = Iowa
| deathDate =
| deathPlace =
| species = Plant
| gender =
| height =
| weight =
| eyes =
| portrayedby =
| appearsin =
| debut =
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
6ddf3451fd7140d6b498a17d53162a4ccd65e691
Template:Book
10
11
20
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Book">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="author"><label>Author</label></data>
<data source="illustrator"><label>Illustrator</label></data>
<data source="datePublished"><label>Published on</label></data>
<data source="publisher"><label>Publisher</label></data>
<group layout="horizontal">
<header>Publication order</header>
<data source="previous"><label>Previous</label></data>
<data source="next"><label>Next</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Books]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
c4bc425c60ee6f1a263f67a75f6d26aafc236c03
Template:Book/doc
10
12
22
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>{{Book
| title =
| image = [e.g. "Example.jpg"]
| author =
| illustrator =
| datePublished =
| publisher =
| previous =
| next =
}}</pre>
== Sample output ==
{{Book
| title = The Adventures of Flower
| image = Example.jpg
| author = Alice
| illustrator = Bob
| datePublished = April 1928
| publisher = Arthur's
| previous = Book One
| next = Book Three
}}
<pre>{{Book
| title = The Adventures of Flower
| image = Example.jpg
| author = Alice
| illustrator = Bob
| datePublished = April 1928
| publisher = Arthur's
| previous = Book One
| next = Book Three
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
7320d1953158c6673ed6ce2be7bc35e2356522e5
Template:Episode
10
13
24
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Episode">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="partOfSeason"><label>Season</label></data>
<data source="episodeNumber"><label>Episode</label></data>
<data source="airDate"><label>Air date</label></data>
<data source="writer"><label>Writer</label></data>
<data source="director"><label>Director</label></data>
<group layout="horizontal">
<header>Episode guide</header>
<data source="previousEpisode"><label>Previous</label></data>
<data source="nextEpisode"><label>Next</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Episodes]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
222b04973118bf9a11e3e5f3a034c07b6ec30fee
Template:Episode/doc
10
14
26
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>{{Episode
| title =
| partOfSeason =
| episodeNumber =
| image = [e.g. "Example.jpg"]
| airDate =
| writer =
| director =
| previousEpisode =
| nextEpisode =
}}</pre>
== Sample output ==
{{Episode
| title = Flower of Babel
| partOfSeason = One
| episodeNumber = Three
| image = Example.jpg
| airDate = Unaired
| writer = D. Righta
| director = A. di Rektour
| previousEpisode = Episode Two
| nextEpisode = Episode Four
}}<pre>{{Episode
| title = Flower of Babel
| partOfSeason = One
| episodeNumber = Three
| image = Example.jpg
| airDate = Unaired
| writer = D. Righta
| director = A. di Rektour
| previousEpisode = Episode Two
| nextEpisode = Episode Four
}}</pre>
<includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
422683315393b9908127727460675544f6ffb8cf
Template:Event
10
15
28
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Event">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="performers"><label>Performers</label></data>
<data source="date"><label>Date</label></data>
<data source="location"><label>Location</label></data>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Events]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
d66b112135e43b8474d30a6dab0feaab6588dfe8
Template:Event/doc
10
16
30
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Event
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| performers =
| date =
| location =
}}
</pre>
== Sample output ==
{{Event
| title = Flower du Jour
| image = Example.jpg
| performers = Awesome Ones
| date = All the time
| location = Everywhere
}}
<pre>
{{Event
| title = Flower du Jour
| image = Example.jpg
| performers = Awesome Ones
| date = All the time
| location = Everywhere
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
1502585ceb0f0a7e1e70edc0fa8c88720e7da905
Template:Item
10
17
32
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Item">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="type"><label>Type</label></data>
<data source="effects"><label>Effects</label></data>
<data source="source"><label>Source</label></data>
<data source="buy"><label>Cost to buy</label></data>
<data source="sell"><label>Cost to sell</label></data>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Items]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
1c76f47b4d1d6c296c09c245c7dd7d4efc9ff9e6
Template:Item/doc
10
18
34
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Item
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| type =
| effects =
| source =
| buy =
| sell =
}}
</pre>
== Sample output ==
{{Item
| title = Power Flower
| image = Example.jpg
| type = Food
| effects = +1 Fire
| source = Vendor
| buy = 5g
| sell = 1g
}}<pre>
{{Item
| title = Power Flower
| image = Example.jpg
| type = Food
| effects = +1 Fire
| source = Vendor
| buy = 5g
| sell = 1g
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
ecd61f0a9df462e9790349a7ef0034b375ef0e2b
Template:Location
10
19
36
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Location">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<image source="map"><caption source="mapcaption"/></image>
<data source="type"><label>Type</label></data>
<data source="level"><label>Level</label></data>
<data source="location"><label>Location</label></data>
<data source="inhabitants"><label>Inhabitants</label></data>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Locations]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
74c089bf3093e560bd6a2144977d9d0bc5faebc0
Template:Location/doc
10
20
38
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Location
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| map = [e.g. "Example.jpg"]
| mapcaption =
| type =
| level =
| location =
| inhabitants =
}}
</pre>
== Sample output ==
{{Location
| title = Flora Island
| image = Example.jpg
| imagecaption = The island
| map = Example.jpg
| mapcaption = Zone map
| type = Contested
| level = 1-5
| location = Earth
| inhabitants = Stompy Humans, Drinky Bees
}}<pre>
{{Location
| title = Flora Island
| image = Example.jpg
| imagecaption = The island
| map = Example.jpg
| mapcaption = Zone map
| type = Contested
| level = 1-5
| location = Earth
| inhabitants = Stompy Humans, Drinky Bees
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
e3e627290fa1c04d98083b44bcd2fa5cb562e13c
Template:Navbox
10
21
40
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
{| style="width:100%; margin-top:1em; border:1px solid #999; font-size:90%; text-align:center;"
|-
! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}}
|-
| style="padding:0.2em 0.5em;" | {{{body}}}
|}<noinclude>
{{documentation}}</noinclude>
21aa3440d9c06c537ca5808c298e155d57e8dc90
Template:Navbox/doc
10
22
42
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to create a basic navigation box. You can do so by calling the template, via the steps under "Syntax", but it is recommended to '''copy the code verbatim''' via the steps under "Navbox Creation".
;Navbox Creation
<inputbox>
type=create
prefix=Template:
preload=Template:Navbox
editintro=Template:Navbox/doc
buttonlabel=Make your navbox!
default = Navbox Foo
</inputbox>
#Think of a name for your navbox, like "Navbox Foo". Type it in the above field, press the button, and save the page immediately. Be ready to return to ''this'' page to see the rest of the instructions.
#Edit the resulting page in source mode.
#Replace <code>{{{header}}}</code> with the text you would like to appear in the header.
#Replace <code>{{{body}}}</code> with the text you would like to appear in the body.
#To add another section, copy these four lines of code immediately below the lines in the existing code that they resemble:
<pre>|-
! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}}
|-
| style="padding:0.2em 0.5em;" | {{{body}}}</pre>
Save the page once you have added as many sections as you needed, and filled them with content. You may also want to create a /doc subpage explaining that to call the resulting template, one must only type <code>{<nowiki/>{Navbox Foo}}</code>, or rather, whatever we decided to name the template in step 1.
;Syntax
<pre>{{navbox
|header=Land of Bob
|body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>.
}}</pre>
:Results in...
{{navbox
|header=Land of Bob
|body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>.
}}
<includeonly>[[Category:Navbox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
4b1a1bf5f00c2d159d30d8f8bc525309ac16d406
Template:Quest
10
23
44
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Quest">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="start"><label>Start</label></data>
<data source="end"><label>End</label></data>
<data source="prerequisites"><label>Prerequisites</label></data>
<data source="level"><label>Level</label></data>
<data source="location"><label>Location</label></data>
<data source="rewards"><label>Rewards</label></data>
<group layout="horizontal">
<header>Quest progression</header>
<data source="previous"><label>Previous</label></data>
<data source="next"><label>Next</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Quests]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
1057bf1c3220419334e60f6b01c07995f871d8f8
Template:Quest/doc
10
24
46
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Quest
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| start =
| end =
| prerequisites =
| level =
| location =
| rewards =
| previous =
| next =
}}
</pre>
== Sample output ==
{{Quest
| title = Example infobox
| image = Example.jpg
| start = Chrys
| end = Geran
| prerequisites = None
| level = 5
| location = Earth
| rewards = Justice-Wrought Petals
| previous = A
| next = C
}}
<pre>{{Quest
| title = Example infobox
| image = Example.jpg
| start = Chrys
| end = Geran
| prerequisites = None
| level = 5
| location = Earth
| rewards = Justice-Wrought Petals
| previous = A
| next = C
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
3c80ee4fc3fe45023bd67b3c400b2e64f4f2892a
File:Wiki.png
6
25
48
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
[[Category:Wiki skin images]]
f0235f85e2414431e046ae251792bf050daef5f7
Template:Permission
10
26
50
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file is copyrighted. The copyright holder has given permission for its use.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files used with permission]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
5940d21c4cf55ab1e46623c8d7202220620ea3fc
Template:Fairuse
10
27
52
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file is copyrighted. It will be used in a way that qualifies as fair use under US copyright law.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Fairuse files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
5db6645c70193dbeb65eed77de07f36451e1145c
Template:Self
10
28
54
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file was uploaded by the photographer or author.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files uploaded by the photographer or author]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
c3570ab7a69cc0cdf1478e8b7d45f8c70f1214c0
Template:From Wikimedia
10
29
56
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file was originally uploaded on Wikipedia or another Wikimedia project.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files from WikiMedia projects]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
72fed0e402d6912cd6381ef1b21b52929b041d8c
Template:CC-BY-SA
10
30
58
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file is licensed under the [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:CC-BY-SA files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
b7cc0c0ae4d0cbff86fb66f332cdbfd9ef0c67f1
Template:Other free
10
31
60
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file is licensed under a free license.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Freely licensed files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
a0e93bfb8a804eb54e67553ff50ba57b368ba00d
Template:PD
10
32
62
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{LicenseBox|text=''This file is in the public domain''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Public domain files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
daf709f747ba95ea06112acade4c78177a475e30
Template:Permission/doc
10
33
64
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images as being copyrighted, but the copyright holder has given permission for its use.
;Syntax
:Type <code>{{t|permission}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
e2fc5fa15609d14fe9de91b503904f2b3f363afa
Template:Fairuse/doc
10
34
66
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images as fair use.
;Syntax
:Type <code>{{t|fairuse}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
a0b1f9487b6ecaaa0f6ea70533a69c17d42e01ff
Template:Self/doc
10
35
68
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images as having been uploaded by the photographer or author.
;Syntax
:Type <code>{{t|self}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
8daf839df62f0465275f6ef57c3998c9af9e4e1d
Template:From Wikimedia/doc
10
36
70
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images as having been uploaded on [[wikipedia:|Wikipedia]] or another [[wikimedia:|Wikimedia]] project.
;Syntax
:Type <code>{{t|From Wikimedia}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
077fe0f228cb18bf949fee95011ec7b36fe64033
Template:CC-BY-SA/doc
10
37
72
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images with the CC-BY-SA license.
;Syntax
:Type <code>{{t|CC-BY-SA}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
4fa145ced3f3a218b897f635df8d678eeff73464
Template:Other free/doc
10
38
74
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images with a free license not covered by other image templates.
;Syntax
:Type <code>{{t|Other free}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f4a03ee383d67da50c93408169b82b8217ff1404
Template:PD/doc
10
39
76
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark images as being in the public domain.
;Syntax
:Type <code>{{t|PD}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
bf14002371e6786761dfb4a58f4fdaf44062b8cc
Template:Topic
10
40
78
2021-08-16T20:00:48Z
FANDOM
3
Created page with "<includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude>"
wikitext
text/x-wiki
<includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude>
e8c5bb53e6d20ba0b81fcfa08813051675219442
Template:Topic/doc
10
41
80
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
This template uses your wiki's <code>SITENAME</code> and strips off the word "wiki" leaving what is in most cases the text describing the topic of your wiki. To use this template in its basic form, simply add the {{T|{{BASEPAGENAME}}}} template wherever you want your topic to appear in a sentence or section.
If your wiki's <code>SITENAME</code> minus the word "wiki" is not a good descriptor for your wiki's topic, you may also simply edit the template and replace it with just the text you want displayed.
== Syntax ==
<pre>{{Topic}}</pre>
== Sample output ==
{{Topic}}
<includeonly>[[Category:Templates]]</includeonly><noinclude>[[Category:Template documentation|{{PAGENAME}}]]</noinclude>
54e98cb6fa2fa6aec9e9fa9b138b0cd6d5bf321b
Category:Infobox templates
14
42
82
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Templates
14
43
84
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Maintenance]]"
wikitext
text/x-wiki
[[Category:Maintenance]]
a106a39e26c77e7b2ec90cb83728a6446cb6a1a1
Category:Maintenance
14
44
86
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
The subcategories of this category contain pages that have been identified as needing attention for one or more of the following reasons:
* Changes have been suggested that should be discussed first or are under discussion.
* The page has flaws that need addressing by an editor with the knowledge or skills to help.
* The action the page needs requires special rights.
''See also:''
{{cols|2|
* [[Special:BrokenRedirects|Broken redirects]]
* [[Special:DoubleRedirects|Double redirects]]
* [[Special:UncategorizedCategories|Uncategorized categories]]
* [[Special:UncategorizedFiles|Uncategorized files]]
* [[Special:UncategorizedPages|Uncategorized pages]]
* [[Special:UncategorizedTemplates|Uncategorized templates]]
* [[Special:WantedCategories|Wanted categories]]
* [[Special:WantedFiles|Wanted files]]
* [[Special:WantedPages|Wanted pages]]
* [[Special:WantedTemplates|Wanted templates]]
* [[Special:TrackingCategories|Other special tracking categories]]
}}
[[Category:{{SITENAME}}]]
3646bf22bbf81213a9b8ea11df02ceee8866b235
Category:Image license templates
14
45
88
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Navbox templates
14
46
90
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:General wiki templates
14
47
92
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Documentation templates
14
48
94
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Template documentation
14
49
96
2021-08-16T20:00:48Z
FANDOM
3
Created page with "The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template. [[Category:Templates]]"
wikitext
text/x-wiki
The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template.
[[Category:Templates]]
e1cf9416700d7877b308b2f9051b33cd028dd11d
Template:Main
10
50
98
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|main}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Main_article
--></noinclude>
de20b6a379396a3458f12d72e486fce07869137c
Template:See also
10
51
100
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|seeAlso}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Hatnote
--></noinclude>
e245d8ecb350a8965723151f4fad9d3cafedad60
Template:About
10
52
102
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|about}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:About
--></noinclude>
510109cae7f705952c7a0279d73a7a44fa82d41f
Template:For
10
53
104
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|For}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Hatnote
--></noinclude>
6caebf265784c02a3dba04fe77eb5c5afb52fbd4
Template:Further
10
54
106
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|further}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Hatnote
--></noinclude>
2b274c2a078defdd0995162869db05d3fc772067
Template:Hatnote
10
55
108
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>{{Documentation}}</noinclude>
47651229f8ca41785babe25d56cdae7ac03ad9e1
Template:Delete
10
56
110
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{MessageBox
|header = Candidate for deletion
|type = delete
|text = This page has been nominated for removal from the wiki.
|comment = Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deletion.
|class = notice hidden plainlinks
|id = delete
}}<includeonly>[[Category:Candidates for deletion]]</includeonly><noinclude>
{{Documentation}}</noinclude>
4173b2533a1aa36de4f2777956f1eae8889808ba
Template:Quote
10
57
112
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
{{#invoke:Quote|quote}}<noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://starter.fandom.com/wiki/Template:Quote?oldid=4277
--></noinclude>
bf6ed2ef0e8d676125dfd9d9b8b8ad72a18049e3
Template:Disambiguation
10
58
114
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{MessageBox
| header = Disambiguation page for {{PAGENAME}}
| type = disambiguation
| text = The following is a list of links to pages that might share the same title.
| comment = Please follow one of the disambiguation links below or [[Special:Search|search]] to find the page you were looking for if it is not listed. If an [[Special:Whatlinkshere/{{FULLPAGENAME}}|internal link]] led you here, you may wish to change the link to point directly to the intended article.
| class = notice hidden
| id = disambiguation}}
<includeonly>__DISAMBIG__[[Category:Disambiguations]]</includeonly><noinclude>
{{documentation}}</noinclude>
16605ae9114395add2e702cee409d0bd2deb7603
Template:MessageBox
10
59
116
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
{{#invoke:Mbox|main}}<noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Ambox
--></noinclude>
fab8a2df56fd74147e1709af14e8993cfab7ebe7
Template:Dialogue
10
60
118
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
<includeonly><blockquote data-format="dialogue">{{#invoke:Dialogue|main}}</blockquote></includeonly><noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Dialogue
--></noinclude>
400ad4d61c7eff1f67db8a2116441090d803cb3d
Template:Namespace
10
61
120
2021-08-16T20:00:48Z
FANDOM
3
1 revision imported
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Namespace_detect
--></noinclude>
f5b6ed2c0363fd704c716a6e5420a5cc0546392f
Template:Hatnote/doc
10
62
122
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
The hatnotes used for adding links between articles where more context is important.
Broadly speaking, a hatnote should answer a readers' question: Am I on the right page?
== Usage ==
; Basic usage:
{{hatnote|''text''}}
; All parameters:
{{hatnote|''text''|extraclasses=''extra classes''|selfref=''yes''|category=''no''}}
== Parameters ==
This template accepts the following parameters:
* <code>1</code> - the hatnote text (required)
* <code>extraclasses</code> - any extra CSS classes to be added.
* <code>selfref</code> - If set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references.
* <code>category</code> - If set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This has an effect only if the leftmost parameter (the hatnote text) is omitted.
== Example ==
* <code><nowiki>{{hatnote|Example hatnote text}}</nowiki></code> → {{hatnote|Example hatnote text}}
== Typical types ==
{{T|Main}}, {{T|Further}} are very similar, but indicate either the primary page for a topic or more detailed related topic. They have a nearly identical set of parameters.
;{{T|Main}}: When an article is large, it often has a summary and a link to a main article. This template is used after the heading of the summary, to indicate a link to the subtopic article that has been summarized.
;{{T|Further}}: Used to link to articles containing further information on this topic.
;{{T|See also}}: Used to link to additional articles on related topics.
:;{{T|Main|Main Page}} →:{{Main|Main Page}}
:;{{T|Main|Main Page|Main Page}} →:{{Main|Main Page|Main Page}}
:*<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the namespace prefix). Categories and files are automatically escaped with the [[w:Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''.
:*<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>.
:*<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references.
== Disambiguation ==
Templates such as {{T|About}} and {{T|For}} are to be used in cases where a disambiguation is not needed. In general, disambiguation pages should only be used for 4 or more titles that are mostly or entirely identical, except for a qualifier.
;{{T|About}}: Links the reader to other articles with similar titles or concepts that they may have been seeking instead. The template has several formats, including:
:;{{T|About|Use1}} →:{{About|}}
:;{{T|About|Use1|<nowiki/>|Main Page}} →:{{About|Use1||Main Page}}
:;{{T|About|Use1|<nowiki/>|Main Page|and|Main Page}} →:{{About|Use1||Main Page|and|Main Page}}
:;{{T|About|Use1|Use2|Main Page}} →:{{About|Use1|Use2|Main Page}}
:;{{T|About|Use1|Use2|Main Page|and|Main Page}} →:{{About|Use1|Use2|Main Page|and|Main Page}}
:;{{T|About|Use1|Use2|Main Page|other uses}} →:{{About|Use1|Use2|Main Page|other uses}}
Alternately, a <code>section=yes</code> parameter can be added to the {{T|About}} template for use at the top of a section. When using this parameter, the wording in the template changes to specify that it is being used in a section:
:;{{T|About|Use1|<nowiki>section=yes</nowiki>}} →:{{About|Use1|section=yes}}
:;{{T|About|Use1|<nowiki/>|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1||Main Page|section=yes}}
:;{{T|About|Use1|Use2|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|section=yes}}
:;{{T|About|Use1|Use2|Main Page|and|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|and|Main Page|section=yes}}
:;{{T|About|Use1|Use2|Main Page|other uses|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|other uses|section=yes}}
A <var>text</var> option adds text to the end; note that this should be only used when truly necessary, and the other hatnote templates listed below don't suffice. This template also supports <var>selfref</var>.
;{{T|For}}: Provides links to up to four articles or disambiguation pages. It accepts zero to five parameters.
:;If used without parameters on a page named ''Foo'', the result is
::{{hatnote|For other uses, see [[:Foo (disambiguation)]].}}
:;The first parameter changes the hatnote itself and should be plain text, e.g. {{T|For|similar terms}} yields
::{{hatnote|For similar terms, see [[:Foo (disambiguation)]].}}
:;The second parameter is used to change the resultant link, e.g. {{T|For|similar terms|Main Page}} yields
::{{For|similar terms|Main Page}}
:;The third, fourth and fifth parameters are used to give one, two, or three supplementary links:
:*{{For|similar terms|Main Page|Main Page}}
:*{{For|similar terms|Main Page|Main Page|Main Page}}
:*{{For|similar terms|Main Page|Main Page|Main Page|Main Page}}
:the last being produced by e.g. {{T|For|similar terms|Main Page|Main Page|Main Page|Main Page}}.
== Errors ==
If no hatnote text is supplied, the template will output the following message:
* {{hatnote|category=no}}
If you see this error message, it is for one of four reasons:
# No parameters were specified (the template code was <code><nowiki>{{hatnote}}</nowiki></code>). Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead.
# Some parameters were specified, but the hatnote text wasn't included. For example, the template text <code><nowiki>{{hatnote|extraclasses=seealso}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>|extraclasses=seealso}}</nowiki></code> instead.
# The hatnote text was specified, but that text contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{hatnote|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code> before the hatnote text, like this: <code><nowiki>{{hatnote|1=2+2=4}}</nowiki></code>.
# You tried to access [[Module:Hatnote]] directly by using <code><nowiki>{{#invoke:hatnote|hatnote|</nowiki>''text''<nowiki>}}</nowiki></code>. Use of #invoke in this way has been disabled for performance reasons. Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead.
Pages that contain this error message are tracked in [[:Category:Hatnote templates with errors]].
== Technical details ==
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Hatnote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Hatnote|Hatnote on Templates Wiki]]'''.
The HTML code produced by this template looks like this:
* <code><nowiki><div role="note" class="hatnote"></nowiki>''hatnote text''<nowiki></div></nowiki></code>
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f89b62bda227691a45fd6d42d8bf89b151436cd2
Template:Delete/doc
10
63
124
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to mark pages for deletion, categorizing them in [[:Category:Candidates for deletion]].
;Syntax
:Type <code>{{t|delete}}</code> on the page to be deleted.'''
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
baa263e149fb470c182f0de3af57178739e61a86
Template:Quote/doc
10
64
126
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
==Description==
To use this template, enter the following and fill in the appropriate fields. Most fields left blank will not show up.
==Syntax==
<pre>
{{Quote
| quote =
| speaker =
| source =
}}
</pre>
As an alternative, these can be placed in positional order.
==Samples==
{{Quote
| quote = When you play the game of thrones, you win or you die.
| speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]]
| source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]]
}}
<pre>
{{Quote
| quote = When you play the game of thrones, you win or you die.
| speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]]
| source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]]
}}
</pre>
or
<pre>
{{Quote
| When you play the game of thrones, you win or you die.
| [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]]
| [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]]
}}
</pre>
== Technical details ==
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Quote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Quote|Quote on Templates Wiki]]'''.
<includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
9257007bdd810476e8723e435841c3f133a204f2
Template:Disambiguation/doc
10
65
128
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:Marks an article as a disambiguation page, adding a banner to the article and categorizing it under [[:Category:Disambiguations]].
;Syntax
:Add <code>{{t|disambiguation}}</code> at the top of a disambiguation page.
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
c0a52d0ac40d9827b4462625985906e37c6f83c9
Template:MessageBox/doc
10
66
130
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{T|MessageBox}} is a template for creating message boxes.
It is highly customizable with classes, inline styles, and provided CSS selectors. Optional features such as an image, left border, right-side text (for e.g. shortcuts), and a dismiss function.
It uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Mbox|on the Global Lua Module page]]. This version is modified to produce a starter style, based on the [[w:c:dev:mediawiki:Global Lua Modules/Mbox.css|basic style from the module]]. To use the full capabilities of this module and remove the default styling, remove the indicated portions of [[Module:Mbox]].
'''For a traditional wikitext version of this template, see [[w:c:templates:Template:Ambox|Ambox on Templates Wiki]]'''.
==Parameters==
For examples of how to use these parameters, see [[#Examples]].
{| class="wikitable" style="width: 100%"
! Parameter name
! Description
! Required?
! Default
|-
| <code>class</code>
| Additional classes to the root <code>.mbox</code> element.
| No
| —
|-
| <code>bordercolor</code>
| The color of the thick left-most border.
| No
| Stylesheet default
|-
| <code>type</code>
| Type of mbox as declared as in CSS with variables. Affects color of the thick left-most border. See [[#Using types]].
| No
| —
|-
| <code>bgcolor</code>
| The color of the mbox's background.
| No
| Stylesheet default
|-
| <code>style</code>
| Additional inline styles to the root <code>.mbox</code> element.
| No
| —
|-
| <code>image</code>
| An image to be added to the left of all text content.
| No
| —
|-
| <code>imagewidth</code>
| The width of the image (height automatically adjusts).
| No
| <code>60px</code>
|-
| <code>imagelink</code>
| The link to which the image points (could link to the relevant maintenance category, per example). If not included, the image will be un-clickable.
| No
| —
|-
| <code>header</code>
| The header (bold text placed at the top). This is typically used to very briefly explain the subject of the mbox itself, as when the mbox is closed, only the header will show.
| No
| —
|-
| <code>text</code>
| Non-bold text placed below the header, typically used to explain the subject of the mbox in further or additional detail. When the mbox is closed, this text will be hidden.
| No
| —
|-
| <code>comment</code>
| Smaller non-bold text placed below the main text, typically used to add additional links or context about the notice. When the mbox is closed, this text will be hidden.
| No
| —
|-
| <code>aside</code>
| Text placed within a small allocation on the right side separated by a light gray border. Most commonly used to show shortcuts to the page in question (such as on policy pages). When the mbox is closed, this text will be hidden.
| No
| —
|-
| <code>id</code>
| By default, one close button will close all mboxes on the page. However, to change this, this parameter may be used, given as the name of the mbox implementation (e.g., "Template:Cleanup" would have <code><nowiki>|id=cleanup</nowiki></code>).
| No
| —
|-
| <code>collapsed</code>
| By default, the mbox will be uncollapsed, and the full contents will be shown. However, to change this, this parameter may be used to set an mbox as collapsed by default (e.g., <code><nowiki>|collapsed=true</nowiki></code> would set the mbox to be collapsed by default).
| No
| —
|}
==Design==
Some communities may wish to customize the appearance of the mboxes. The most common styling options are provided illustrated in CSS.
<syntaxhighlight lang="css" class="mw-collapsible mw-collapsed">
.mbox {
/* the background of the entire box */;
background-color: ;
/* the border color of the entire box */
border-color: ;
/* the border thickness of the entire box */
border-width: ;
/* the default thick left border color; note this can be changed from within the template implementations using the "color" parameter */
border-left-color: ;
/* the rounded-ness of the corners */;
border-radius: ;
/* the baseline font-size of the mbox */
font-size: ;
}
.mbox__content {
/* the padding inside the mbox */
padding: ;
}
.mbox__content__image {
/* the minimum width of the mbox's image (if bigger, use the "imagewidth" parameter in the template) */
width: ;
/* the spacing to the left of the text (i.e., the right of the image) */
padding-right: ;
}
.mbox__content__text__comment {
/* the size of the text in the "comment" parameter */
font-size: ;
}
.mbox__content__aside {
/* any particular modifications to the "aside" area can go here */
/* the maximum width of the aside area */
width: ;
}
.mbox__close {
/* the appearance of the close symbol here */
}
.mbox__close:after {
/* overwrite "content" here if you do not wish for the close symbol to be × */
content: '';
}
.mw-collapsed + .mbox__close {
/* modifications to the close symbol when the box is closed */
}
.mw-collapsed + .mbox__close:after {
/* overwrite "content" here if you do not wish for the close symbol to be + when the box is closed */
content: '';
}
</syntaxhighlight>
; Technical notes
* Additional inline styles to the root <code>.mbox</code> element can be achieved via the <code>style</code> parameter in the template.
== Examples ==
=== Basic MessageBox ===
<pre>
{{MessageBox
|header = Header text here
|text = Normal text here
|id = test1
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|text = Normal text here
|id = test1
}}
=== Using types ===
To use types, CSS variables must be added, such as:
<syntaxhighlight lang="css">
:root {
--type-important: rgba(200, 0, 0, 0.8);
--type-moderate: rgba(233, 124, 47, 0.8);
--type-minor: rgba(241, 197, 37, 0.8);
}
</syntaxhighlight>
If added:
<pre>
{{MessageBox
|header = Header text here
|type = important
|text = Normal text here
|id = test2
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|type = important
|text = Normal text here
|id = test2
}}
Depending on your styling, there may not be a visual difference in the above example.
=== With an image ===
<pre>
{{MessageBox
|header = Header text here
|text = Normal text here
|image = Wiki.png
|imagelink =
|imagewidth = 50px
|id = test3
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|text = Normal text here
|image = Wiki.png
|imagelink =
|imagewidth = 50px
|id = test3
}}
=== With an aside ===
<pre>
{{MessageBox
|header = Header text here
|type = important
|text = Normal text here
|aside = Aside text here
|id = test4
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|type = important
|text = Normal text here
|aside = Aside text here
|id = test4
}}
=== Standard/default style ===
<pre>
{{MessageBox
|header = Header text here
|text = Normal text here
|comment = Comment text here
|image = Wiki.png
|aside = Aside text here
|id = standard
}}</pre>
Produces:
{{#invoke:Mbox|main|header=Header text here |text=Normal text here |comment=Comment text here |image=Wiki.png |aside=Aside text here |id=standard}}
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
ca7c12cf4c7d97a6a3a96c5adc07ee3ceaf78fda
Template:Dialogue/doc
10
67
132
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
{{t|Dialogue}} facilitates the writing of dialogue in a standard format. The template can handle most standard formats of writing dialogue, and can be indented, bulleted or numbered. '''This template ''cannot'' be <code>subst:</code>'d'''.
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Dialogue|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Dialogue/wikitext|Dialogue on Templates Wiki]]'''.
==Syntax==
This is how to write the template in [[w:Help:wikitext|wikitext]] onto your article:
<pre>{{dialogue
|short=full
|short=full
|short=full
...
|Character|Speech
|Character|Speech
|Character|Speech
...
|cite = dialogue description
}}</pre>
These parameters are explained more fully below.
==Parameters==
'''Named parameters specify name shortcuts. They are all optional.''' They are placed at the top of the template call, like this:
<pre>{{dialogue
|short=full
|short=full
|short=full
...</pre>
Name shortcuts apply to your main dialogue text. If you use a shortcut specified here for a character name, then the full name will be replaced for it.
Named parameters of the form "<code>mood1</code>", "<code>mood2</code>", "<code>mood3</code>", etc., up to "<code>mood10</code>", specify moods for the corresponding line number (e.g. "<code>mood1</code>" specifies line 1). They are placed in a line like this:
<pre>...
|Character|Speech|mood1=angry
|Character|Speech|mood2=quiet
|Character|Speech|mood3=ecstatic
...</pre>
Positional parameters form the text of the dialogue (i.e. any line not containing an "<code>=</code>" will be construed as part of the dialogue.
:;<code>Parameter 1</code> ''(required)'' : Character name speaking
:;<code>Parameter 2</code> ''(optional)'' : Line to speak
:;<code>Parameter 3</code> ''(optional)'' : Next character
:;<code>Parameter 4</code> ''(optional)'' : Next line
:;<code>Parameter 5</code> ''(optional)'' : Next character
:;<code>Parameter 6</code> ''(optional)'' : Next line
:;<code>Parameter 7</code> ''(optional)'' : so on...
Note: if any character is called "<code>action</code>" then that line will be construed as an action line. It still counts as a ''line'' nonetheless.
To write a dialogue description/source, use <code>cite =</code>
==Examples==
Here is an example of a full template usage:
<pre>{{dialogue
|harry=Harry Enfield
|bryan=Bryan Adams
|harry|Hello! |mood1=happy
|bryan|Oh hello there |mood2=surprised
|harry|How are you? |mood3=inquisitive
|bryan|Quite fine thank you. |mood4=reserved
|harry|Oh that's spiffing. |mood5=spiffed
|bryan|It is, isn't it?! |mood6=multo-spiffed
|harry|Quite so. |mood7=bored
|bryan|Well, I'm off! |mood8=joyous
|harry|Ta-ta! |mood9=relieved
|bryan|Au revoir! |mood10=sarcastic
}}</pre>
The above would generate:
{{dialogue
|harry=Harry Enfield
|bryan=Bryan Adams
|harry|Hello! |mood1=happy
|bryan|Oh hello there |mood2=surprised
|harry|How are you? |mood3=inquisitive
|bryan|Quite fine thank you. |mood4=reserved
|harry|Oh that's spiffing. |mood5=spiffed
|bryan|It is, isn't it?! |mood6=multo-spiffed
|harry|Quite so. |mood7=bored
|bryan|Well, I'm off! |mood8=joyous
|harry|Ta-ta! |mood9=relieved
|bryan|Au revoir! |mood10=sarcastic
}}
The below code demonstrates examples of extended use:
<pre>{{dialogue
|george=Georgie Boy
|rachel=Rachel
|action|Enter: George and Rachel
|george|Good morrow dearest Rachel!|mood2=happy
|action|Rachel turns to see him
|rachel|Oh, George, it's you!
|george|...
|rachel|Why won't you say anything?!|mood6=worried
|action|Enter: Guards
|Guards|We are announcing George's arrest!
|rachel|Oh my!|mood9=horrified
|action|George is dragged away.
}}</pre>
The above would generate:
{{dialogue
|george=Georgie Boy
|rachel=Rachel
|action|Enter: George and Rachel
|george|Good morrow dearest Rachel!|mood2=happy
|action|Rachel turns to see him
|rachel|Oh, George, it's you!
|george|...
|rachel|Why won't you say anything?!|mood6=worried
|action|Enter: Guards
|Guards|We are announcing George's arrest!
|rachel|Oh my!|mood9=horrified
|action|George is dragged away.
}}
===Notes===
You can number, bullet or indent your dialogue:
<pre>:{{dialogue|Me|Hello|You|Howdido!}}</pre>
:{{dialogue|Me|Hello|You|Howdido!}}
<pre>#{{dialogue|Me|Hello|You|Howdido!}}
#{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}</pre>
#{{dialogue|Me|Hello|You|Howdido!}}
#{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}
<pre>*{{dialogue
|angel=Fortitude
|angel|I am an angel!|Crowd|We don't believe you!}}
*{{dialogue
|angel=Fortitude
|angel|But I'm being quite serious!|Crowd|Too bad for you then!}}</pre>
*{{dialogue
|angel=Fortitude
|angel|I am an angel!|Crowd|We don't believe you!}}
*{{dialogue
|angel=Fortitude
|angel|But I'm being quite serious!|Crowd|Too bad for you then!}}
You will get the odd spacing error (e.g. "Speech<code><nowiki><space></nowiki></code>") if you lay out your dialogue on multiple lines.
<includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
56b3a94f307db52b25c728122e451a63e806c791
Template:Namespace/doc
10
68
134
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
This is the {{t|Namespace}} meta-template. It helps other templates detect what type of page they are on.
It detects and groups all the different [[Wikipedia:Namespace#Enumeration|namespaces]] used on Fandom into several types:
; main : Main (i.e. article) space, where normal articles are kept.
; talk : Any talk space, including page names that start with "Talk:", "User talk:", "File talk:", etc.
;user
;file
;mediawiki
;template
;help
;category
: The remaining namespaces.
; other : Any namespaces that were not specified as a parameter to the template (see explanation below).
For backwards compatibility, this template handles '''image''' as if '''file'''. '''image''' (<nowiki>[[Image:...]]</nowiki>) is now deprecated.
'''Note:''' For most cases it may be better to use the simpler namespace detection templates (see the [[#See also|see also]] section below). This template is more prone to human errors such as misspelling parameter names.
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Namespace_detect|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Namespace_detect|Namespace_detect on Templates Wiki]]'''.
== Usage ==
This template takes one or more parameters named after the different page types as listed above. Like this:
<pre>
{{Namespace
| main = Article text
| talk = Talk page text
| other = Other pages text
}}
</pre>
If the template is on a main (article) page, it will return this:
: {{Namespace |demospace=main
| main = Article text
| talk = Talk page text
| other = Other pages text
}}
If the template is on any other page than an article or a talk page, it will return this:
: {{Namespace
| main = Article text
| talk = Talk page text
| other = Other pages text
}}
The example above made the template return something for all page types. But if we don't use the '''other''' parameter or leave it empty, it will not return anything for the other page types. Like this:
<pre>
{{Namespace
| file = File page text
| category = Category page text
| other =
}}
</pre>
On any pages other than file and category pages the code above will render nothing.
<!-- Do not remove this one. It is supposed to render nothing, but we have it here for testing purposes. -->
: {{Namespace
| file = File page text
| category = Category page text
| other =
}}
By using an empty parameter, you can make it so the template doesn't render anything for some specific page type. Like this:
<pre>
{{Namespace
| main =
| other = Other pages text
}}
</pre>
The code above will render nothing when on mainspace (article) pages, but will return this when on other pages:
: {{Namespace
| main =
| other = Other pages text
}}
== Demospace and page ==
For testing and demonstration purposes, this template can take two parameters named '''demospace''' and '''page'''.
'''demospace''' understands any of the page type names used by this template, including the '''other''' type. It tells the template to behave like it is on some specific type of page. Like this:
<pre>
{{Namespace
| main = Article text
| other = Other pages text
| demospace = main
}}
</pre>
No matter on what kind of page the code above is used, it will return this:
: {{Namespace
| main = Article text
| other = Other pages text
| demospace = main
}}
The '''page''' parameter instead takes a normal pagename, making this template behave exactly as if on that page. The pagename doesn't have to be an existing page. Like this:
<pre>
{{Namespace
| user = User page text
| other = Other pages text
| page = User:Example
}}
</pre>
No matter on what kind of page the code above is used, it will return this:
: {{Namespace
| user = User page text
| other = Other pages text
| page = User:Example
}}
It can be convenient to let your template understand the '''demospace''' and/or '''page''' parameter and send it on to the {{T|Namespace}} template. Like this:
<pre>
{{Namespace
| main = Article text
| other = Other pages text
| demospace = {{{demospace|}}}
| page = {{{page|}}}
}}
</pre>
If both the '''demospace''' and '''page''' parameters are empty or undefined, the template will detect page types as usual.
== Parameters ==
List of all parameters:
<pre>
{{Namespace
| main =
...
| other =
| demospace = {{{demospace|}}} / main / talk / user /
file / mediawiki / template /
help / category / other
| page = {{{page|}}} / User:Example
}}
</pre>
== Technical details ==
If you intend to feed tables as content to the numbered parameters of this template, you need to know this:
[[w:Help:Template|Templates]] have a problem handling parameter data that contains pipes "<code>|</code>" unless the pipe is inside another template <code><nowiki>{{name|param1}}</nowiki></code> or inside a piped link <code><nowiki>[[w:Help:Template|help]]</nowiki></code>. Thus templates can not handle [[w:Help:Table|wikitables]] as input unless you escape them by using the <code><nowiki>{{!}}</nowiki></code> [[w:Help:Magic words|magic word]]. This makes it hard to use wikitables as parameters to templates. Instead, the usual solution is to use HTML wikimarkup for the table code, which is more robust.
<includeonly>[[Category:General wiki templates]]{{#ifeq:{{SUBPAGENAME}}|sandbox|[[Category:Namespace manipulation templates]]}}</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
abd1a20286343a0c76ff9c575682bd5d011f5a6d
Module:Dialogue
828
69
136
2021-08-16T20:00:48Z
FANDOM
3
fixing broken help link
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Dialogue module from the [[w:c:dev:Global Lua Modules]].
local Dialogue = require('Dev:Dialogue')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Dialogue]]
-- The last line produces the output for the template
return Dialogue
a147d7d4d5837eeb0910d21be2904bbae6658ad2
Module:Hatnote
828
70
138
2021-08-16T20:00:48Z
FANDOM
3
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]].
local H = require('Dev:Hatnote')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]]
-- The last line produces the output for the template
return H
d52966e186d4771ee7844be7f402467c51644349
Module:Mbox
828
71
140
2021-08-16T20:00:48Z
FANDOM
3
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]].
local Mbox = require('Dev:Mbox')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]]
-- The imported Module is overwritten locally to include default styling.
-- For a more flexible Mbox experience, delete the function below and import
-- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css
-- or paste (and modify as you like) its contents in your wiki's
-- [[MediaWiki:Wikia.css]] (see [[w:Help:Including_additional_CSS_and_JS]])
-- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox
-- for more customization inspiration
--
-- BEGIN DELETION HERE
--
local getArgs = require('Dev:Arguments').getArgs
local localCSS = mw.loadData('Module:Mbox/data').localStyle
function Mbox.main(frame)
local args = getArgs(frame)
-- styles
local styles = {}
if args.bordercolor then
styles['border-left-color'] = args.bordercolor
elseif args.type then
styles['border-left-color'] = 'var(--type-' .. args.type .. ')'
end
if args.bgcolor then
styles['background-color'] = args.bgcolor
end
-- images
local image = args.image or ''
local imagewidth = args.imagewidth or '80px'
local imagelink = ''
if args.imagelink then
imagelink = '|link=' .. args.imagelink
end
local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink)
-- id for closure
local id = args.id or 'mbox'
local container = mw.html.create('div')
:addClass('mbox')
:addClass(args.class)
:css(styles)
:css(localCSS['mbox'])
:cssText(args.style)
local content = container:tag('div')
:addClass('mbox__content')
:css(localCSS['mbox__content'])
if args.image then
local image = content:tag('div')
:addClass('mbox__content__image')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__image'])
:wikitext(imagewikitext)
if args.collapsed then
image:addClass('mw-collapsed')
end
end
local contentwrapper = content:tag('div')
:addClass('mbox__content__wrapper')
:css(localCSS['mbox__content__wrapper'])
if args.header then
contentwrapper:tag('div')
:addClass('mbox__content__header')
:css(localCSS['mbox__content__header'])
:wikitext(args.header)
end
if args.text then
local text = contentwrapper:tag('div')
:addClass('mbox__content__text')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__text'])
:wikitext(args.text)
if args.collapsed then
text:addClass('mw-collapsed')
end
if args.comment then
text:tag('div')
:addClass('mbox__content__text__comment')
:css(localCSS['mbox__content__text__comment'])
:wikitext(args.comment)
end
end
contentwrapper:tag('span')
:addClass('mbox__close')
:addClass('mw-customtoggle-' .. id)
:css(localCSS['mbox__close'])
:attr('title', 'Dismiss')
if args.aside then
local aside = content:tag('div')
:addClass('mbox__content__aside')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__aside'])
:wikitext(args.aside)
if args.collapsed then
aside:addClass('mw-collapsed')
end
end
return container
end
--
-- END DELETION HERE
--
-- The last line produces the output for the template
return Mbox
1c196d668f9209faef3e9a78c1f082f1c8573042
Module:Mbox/data
828
72
142
2021-08-16T20:00:48Z
FANDOM
3
Scribunto
text/plain
local localStyle = {
['mbox'] = {
['display'] = 'flex',
['position'] = 'relative',
['border'] = '1px solid #d6d6d6',
['border-left-width'] = '8px',
['border-left-color'] = '#d6d6d6',
['border-radius'] = '3px',
['margin-bottom'] = '5px',
['min-height'] = '32px'
},
['mbox__content'] = {
['display'] = 'table',
['box-sizing'] = 'border-box',
['width'] = '100%',
['padding'] = '8px 15px'
},
['mbox__content__image'] = {
['display'] = 'table-cell',
['width'] = '40px',
['height'] = '100%',
['text-align'] = 'center',
['vertical-align'] = 'middle',
['padding-right'] = '15px'
},
['mbox__content__wrapper'] = {
['display'] = 'table-cell',
['vertical-align'] = 'middle'
},
['mbox__content__header'] = {
['display'] = 'block',
['font-weight'] = 'bold'
},
['mbox__content__text'] = {
['display'] = 'block'
},
['mbox__content__text__comment'] = {
['font-size'] = 'small'
},
['mbox__content__aside'] = {
['display'] = 'table-cell',
['width'] = '100px',
['vertical-align'] = 'middle',
['text-align'] = 'center',
['padding-left'] = '15px',
['border-left'] = '1px solid #d6d6d6'
},
['mbox__close'] = {
['position'] = 'absolute',
['right'] = '0',
['top'] = '0',
['padding'] = '2px 7px',
['font-weight'] = 'bold',
['font-size'] = '16px',
['color'] = '#bbb',
['cursor'] = 'pointer',
['transition'] = 'all .15s ease-in'
}
}
return { localStyle = localStyle }
7afdc5979e3b8bc8d21b52929058ba24c351dbdc
Module:Namespace detect
828
73
144
2021-08-16T20:00:48Z
FANDOM
3
fixing broken help link
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Namespace_detect module from the [[w:c:dev:Global Lua Modules]].
local NS = require('Dev:Namespace_detect')
-- Local configuration can be modified in
-- [[Module:Namespace detect/data]] and
-- [[Module:Namespace detect/config]]
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace detect]]
-- The last line produces the output for the template
return NS
108c1bd4f38e4a0b40b9a85178a4d68cd557cef3
Module:Namespace detect/config
828
74
146
2021-08-16T20:00:48Z
FANDOM
3
fixing broken help link
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports from the [[w:c:dev:Global Lua Modules]].
local nsConfiguration = require('Dev:Namespace_detect/config')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]]
-- The imported Module is overwritten locally to include default configuration.
-- For a more flexible experience, delete the page import
-- and paste (and modify as you like) its contents into this page
-- https://dev.fandom.com/wiki/Module:Namespace_detect/config
-- The last line produces the output for the template
return nsConfiguration
22ca76ef47387cf20b5fcc7d1f14687f0b2da915
Module:Namespace detect/data
828
75
148
2021-08-16T20:00:48Z
FANDOM
3
fixing broken help link
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports from the [[w:c:dev:Global Lua Modules]].
local nsData = require('Dev:Namespace_detect/data')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]]
-- The imported Module is overwritten locally to include default configuration.
-- For a more flexible experience, delete the page import
-- and paste (and modify as you like) its contents into this page
-- https://dev.fandom.com/wiki/Module:Namespace_detect/data
-- The last line produces the output for the template
return nsData
4056c252664c31f05a9d54c48fcd865cdf41dd9f
Module:Navbox
828
76
150
2021-08-16T20:00:48Z
FANDOM
3
fixed broken help link
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Navbox module from the [[w:c:dev:Global Lua Modules]].
local N = require('Dev:Navbox')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Navbox]]
-- The last line produces the output for the template
return N
7c5d05d6cc02dafdd64b46ca3fbdc3f808e53e5b
Module:Quote
828
77
152
2021-08-16T20:00:48Z
FANDOM
3
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Quote module from the [[w:c:dev:Global Lua Modules]].
local Quote = require('Dev:Quote')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Quote]]
-- The last line produces the output for the template
return Quote
6918bf52f0c3bdbd83cc4611b6243a659e7d800b
Category:Disambiguations
14
78
154
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:{{SITENAME}}]]"
wikitext
text/x-wiki
[[Category:{{SITENAME}}]]
dd8aaa34cf600c1567d240a3f4bc615164a11592
Category:Quote templates
14
79
156
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Notice templates
14
80
158
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Templates]]"
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Candidates for deletion
14
81
160
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
__EXPECTUNUSEDCATEGORY__
This category contains articles that have been marked as candidates for deletion with the {{T|Delete}} template.
'''Administrators, before deleting these pages''' make sure you check each page's discussion page, what links to each page, and the history of each page before proceeding with the deletion.
[[Category:Maintenance]]
a73d7b53cf0697a0682f842f1a71aafbe127aade
Template:=
10
82
162
2021-08-16T20:00:48Z
FANDOM
3
Created page with "<includeonly>=</includeonly><noinclude> {{documentation}}<noinclude>"
wikitext
text/x-wiki
<includeonly>=</includeonly><noinclude>
{{documentation}}<noinclude>
8f9d55b93874a691b84a9b6acb54bc6dd01fbf39
Template:=/doc
10
83
164
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used when escaping <code>=</code> when contained in [[w:Help:Parser functions|Parser functions]].
;This template cannot be substituted.
;Syntax
:Insert this template using <code>{{t|{{=}}}}</code>
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
ce8f267527b35c852e8190c38416584783aa37ac
Template:Clear
10
84
166
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude>
{{documentation}}</noinclude>
02f4c0e17d50c41f902cad74e6d937f585ba4719
Template:Cols
10
85
168
2021-08-16T20:00:48Z
FANDOM
3
Modern and supported browsers no longer need vendor-specific prefixes for column-count
wikitext
text/x-wiki
<includeonly><div style="column-count: {{{1}}};">{{{2}}}</div></includeonly><noinclude>
{{documentation}}</noinclude>
7e455c29d8571535f2a7692bcd711e2d0547441c
Template:Space
10
86
170
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly> </includeonly><noinclude>
{{documentation}}</noinclude>
e1c3d6d869303e7cc9d8a997c69b01995b7e4928
Template:Tocright
10
87
172
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><div style="float:right; clear:{{{clear|right}}}; margin-bottom:.5em; padding:.5em 0 .8em 1.4em; background:transparent; max-width:20em;">__TOC__</div></includeonly><noinclude>
{{documentation}}</noinclude>
e05836955bb88801d044130d69154745f45c7642
Template:Trim
10
88
174
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{{1}}}|}}</includeonly><noinclude>
{{documentation}}</noinclude>
21c7177ac37ea769b22ca26a2493df055a56f87a
Template:Cols/doc
10
89
176
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
This template formats the text into the specified number of columns.
;Syntax
<pre>{{cols|<# of columns>|<content>}}</pre>
Especially useful to wrap long lists of items into multiple columns.
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
763fc74c9235663a500bcc69a50d425c77c16cb0
Template:Space/doc
10
90
178
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
This template allows you to force a space in areas that strip whitespace.
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
e361d3f5c2ca3c7d7503d9bb0d311e9d440c3cc2
Template:Tocright/doc
10
91
180
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
{{t|tocright}} forces the auto-generated Table of Contents for an article to appear floated to the right side of the page, in order to improve article layout.
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
1449f71ce473315e9f2ad72064ee5c76ed00c89d
Template:Trim/doc
10
92
182
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
This template trims whitespace from the beginning and end of the supplied value. It works by using the simple hack of filtering it through the <code>#if</code> parser function.
;Syntax
<nowiki>{{trim| value }}</nowiki>
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f1f126e3f6fe8474d693ec499d71a9c4067043f9
Template:Clear/doc
10
93
184
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
This template allows you to clear the left side, right side, or both sides of the page. Clearing means that the content following the template will not be displayed until the existing content on the specified sides (for example, "hanging" or floating images or blocks) is displayed completely. This template is often used so that the text does not flow around unrelated images.
The template adds the following code to the page: <code><nowiki><div style="clear:left/right/both;"></div></nowiki></code> (the value after <code>clear</code> depends on the parameters). This code affects elements with the CSS property <code>float</code>, including files floated to the side (for example, <code><nowiki>[[File:Image.png|right]]</nowiki></code>).
;Syntax
* To clear both sides of the page, add the code {{t|Clear}}.
* To clear only the left side of the page, add the code {{t|Clear|left}}.
* To clear only the right side of the page, add the code {{t|Clear|right}}.
You can also use {{t|-}} instead of {{t|Clear}} as a shorthand call for this template.
__NOTOC__
;Example
<pre style="display:table">
=== Section 1 ===
[[File:Example.jpg|200px|right]]
Section 1 text.
=== Section 2 ===
Section 2 text.
{{Clear|right}}
=== Section 3 ===
Section 3 text.
</pre>
This code produces the following result:
----
=== Section 1 ===
[[File:Example.jpg|200px|right]]
Section 1 text.
=== Section 2 ===
Section 2 text.
{{Clear|right}}
=== Section 3 ===
Section 3 text.
----
As you can see above, the example image added in section 1 is displayed to the right and extends down through section 2, while the {{t|Clear}} template is called at the end of the second section, resulting in the example image not being next to section 3. Thus, one use of the {{t|Clear}} template is to control which elements are displayed next to which other elements.
== See also ==
* [https://developer.mozilla.org/en-US/docs/Web/CSS/clear CSS property <code>clear</code> on MDN]
* [https://developer.mozilla.org/en-US/docs/Web/CSS/float CSS property <code>float</code> on MDN]
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
23cbf4a368710af74b5a7e729c6a7205939cd5de
File:Example.jpg
6
94
186
2021-08-16T20:00:48Z
FANDOM
3
{{PD}}
[[Category:Images]]
wikitext
text/x-wiki
== Summary ==
{{PD}}
[[Category:Images]]
b45ad4275ad2f01c536d8fee443ea7264309586b
Category:Images
14
95
188
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Media]]"
wikitext
text/x-wiki
[[Category:Media]]
b141d2b9971d6efe9f59bd03449781e71411c631
Category:Media
14
96
190
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:{{SITENAME}}]]"
wikitext
text/x-wiki
[[Category:{{SITENAME}}]]
dd8aaa34cf600c1567d240a3f4bc615164a11592
Template:Game
10
97
192
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox>
<title source="title">
<default>{{PAGENAME}}</default>
</title>
<image source="image">
<caption source="caption"/>
</image>
<data source="developer"><label>Developer</label></data>
<data source="publisher"><label>Publisher</label></data>
<data source="engine"><label>Engine</label></data>
<data source="version"><label>Version</label></data>
<data source="platform"><label>Platform</label></data>
<data source="releasedate"><label>Release date</label></data>
<data source="genre"><label>Genre</label></data>
<data source="mode"><label>Mode</label></data>
<data source="rating"><label>Rating</label></data>
<data source="media"><label>Media</label></data>
<group collapse="open">
<header>System requirements</header>
<data source="requirements"></data>
</group>
</infobox></includeonly><noinclude>{{Documentation}}</noinclude>
632ebe6f3e8bab75f012f57996157e6b71f04c2c
Template:Game/doc
10
98
194
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>{{Game
| title = The game's name, displayed on top of the infobox
| image = [e.g. "Example.jpg"]
| developer =
| publisher =
| engine = The engine the game runs on
| version = Most recently released version of the game. If your wiki does patch notes, you may wish to link to those.
| platform = Platform(s) the game is available on
| releasedate = When the game released
| genre = Genre(s) the game is classified as
| mode = Singeplayer, multiplayer, etc.
| rating = ESRB / PEGI, etc. ratings
| media = What media the game is available on (digital, cartridge, cd, etc.)
| requirements = System requirements
}}</pre>
== Sample output ==
{{Game
| title = The Game of Flower
| image = Example.jpg
| developer =
| publisher =
| engine =
| version =
| platform = PC
| releasedate = Soon
| genre = RPG
| mode = Single player
| rating =
| media =
| requirements = Cutting edge hardware
}}
<pre>{{Game
| title = The Game of Flower
| image = Example.jpg
| developer =
| publisher =
| engine =
| version =
| platform = PC
| releasedate = Soon
| genre = RPG
| mode = Single player
| rating =
| media =
| requirements = Cutting edge hardware
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f43ae1af35184ba75281f54d6c3683a202f5fd69
Template:LicenseBox
10
99
196
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><div style="border-collapse: collapse; border-color: #d6d6d6; border-radius: 3px; border-style: solid; border-left-width: 8px; border-bottom-width: 1px; border-right-width: 1px; border-top-width: 1px; display: flex; margin: 0 auto 5px auto; min-height: 32px; padding: 0.25em 0.5em; {{{style|}}}" class="article-table plainlinks {{{class|}}}">
{{#if:{{{image|}}} | <span style="padding: 2px 0px 2px 0.5em; text-align: center; width: 60px;">[[File:{{{image}}}{{!}}48px{!}}alt{{=}}]]</span>}}
{{{text|''Your license text is not specified''}}}
</div></includeonly><noinclude>
{{documentation}}</noinclude>
069ed63c4b14e0275262b6d3e8d9e91ecba49744
Template:LicenseBox/doc
10
100
198
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
;Description
:This template is used to create the box used by the various image license templates. The default styling is currently geared to a light-themed wiki. If your wiki has a dark theme and this template is too bright relative to the other elements on your wiki, simply change the following style parameters:
:<code>background-color:</code> This is the color of the background and is currently set to: <code>#fefefe</code>
:<code>border-color:</code> This is the color of the borders and is currently set to: <code>#d6d6d6</code>
:<code>color:</code> This is the color of the text and is currently set to: <code>#333</code>
;Syntax
:Type <code>{{t|LicenseBox|text{{=}}License text}}</code> on the image information page.
<includeonly>[[Category:Image license templates| ]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
9ec2738036e3818826b937975731274577856c0d
Template:-
10
101
200
2021-08-16T20:00:48Z
FANDOM
3
Redirected page to [[Template:Clear]]
wikitext
text/x-wiki
#REDIRECT [[Template:Clear]]
1a2aa4a9ba7478e54a2b21cbce68887ea297ea86
Template:Stub
10
102
202
2021-08-16T20:00:48Z
FANDOM
3
Created page with "{{MessageBox |header = Stub |type = stub |text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}}..."
wikitext
text/x-wiki
{{MessageBox
|header = Stub
|type = stub
|text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''
|comment =
|class = notice hidden plainlinks
|id = stub
}}<includeonly>[[Category:Stubs]]</includeonly><noinclude>
{{Documentation}}</noinclude>
613ef53fa1801107adb93e3c0eb28209ba253a26
Template:Stub/doc
10
104
206
2021-08-16T20:00:48Z
FANDOM
3
Created page with " ;Description :This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category. <includeonl..."
wikitext
text/x-wiki
;Description
:This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category.
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
fe9e5e7f5e645666194f69dc88d7d12b5429e8f8
Template:MIT
10
105
208
2021-08-16T20:00:48Z
FANDOM
3
Created page with "{{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>Category:MIT licens..."
wikitext
text/x-wiki
{{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:MIT license files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
fa53e460d1a0d2cfb9e350fa64292cc428aed859
Template:LGPL
10
106
210
2021-08-16T20:00:48Z
FANDOM
3
Created page with " {{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <incl..."
wikitext
text/x-wiki
{{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:LGPL files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
066b54eb9300540d46a07b5148865821bd3b2f08
Template:GFDL
10
107
212
2021-08-16T20:00:48Z
FANDOM
3
Created page with " {{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''Wikipedia:Text of th..."
wikitext
text/x-wiki
{{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''[[Wikipedia:Text of the GNU Free Documentation License|GNU Free Documentation License]]''', Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:GFDL files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
b3c309cd585718bb7808409474f98a1c5ec46103
Template:MIT/doc
10
108
214
2021-08-16T20:00:48Z
FANDOM
3
Created page with ";Description :This template is used to mark images using the MIT license. ;Syntax :Type <code>{{t|MIT}}</code> on the image information page. <includeonly>Category:Ima..."
wikitext
text/x-wiki
;Description
:This template is used to mark images using the MIT license.
;Syntax
:Type <code>{{t|MIT}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f243f408a7cb3acce5635655a2648b3dcd892584
Template:LGPL/doc
10
109
216
2021-08-16T20:00:48Z
FANDOM
3
Created page with ";Description :This template is used to mark images using the LGPL. ;Syntax :Type <code>{{t|LGPL}}</code> on the image information page. <includeonly>Category:Image lic..."
wikitext
text/x-wiki
;Description
:This template is used to mark images using the LGPL.
;Syntax
:Type <code>{{t|LGPL}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
a1352dd235ba24762d42130c24a5a7971e1cdd31
Template:GFDL/doc
10
110
218
2021-08-16T20:00:48Z
FANDOM
3
Created page with ";Description :This template is used to mark images using the GFDL. ;Syntax :Type <code>{{t|GFDL}}</code> on the image information page. <includeonly>Category:Image lic..."
wikitext
text/x-wiki
;Description
:This template is used to mark images using the GFDL.
;Syntax
:Type <code>{{t|GFDL}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
cb8fb84dfc8e1d8b8544fdff7530dce231764a63
Template:Nolicense
10
111
220
2021-08-16T20:00:48Z
FANDOM
3
Created page with "{{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonl..."
wikitext
text/x-wiki
{{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
a99128c5d8a0cd0723b13b6d9e5fd78b18dbedec
Category:Unattributed files
14
112
222
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
__EXPECTUNUSEDCATEGORY__
The files in this category do not have an appropriate license selected and are tagged with the {{t|nolicense}} template.
Administrators should review files in this category and either:
* Update the file page with an appropriate if one can be easily determined.
* Delete the image, though it is good idea to give the uploader a chance to select a license first.
[[Category:Images]]
[[Category:Maintenance]]
fe16ed203269a56dcbf8a76f72943484fe67047f
Template:Nolicense/doc
10
113
224
2021-08-16T20:00:48Z
FANDOM
3
Created page with ";Description :This template is used to mark images where the copyright status is not known. It automatically adds the images to the :Category:Unattributed files|Unattribute..."
wikitext
text/x-wiki
;Description
:This template is used to mark images where the copyright status is not known. It automatically adds the images to the [[:Category:Unattributed files|Unattributed files]] category for later maintenance
;Syntax
:Type <code>{{t|Nolicense}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
346dcb940ca838c854f75f3db5229b97cce87d40
File:Favicon.ico
6
114
226
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
== Licensing ==
{{CC-BY-SA}}
[[Category:Wiki skin images]]
4d9dc3162be921e39ea7166659dae4b8fe461b71
Category:Hatnote templates with errors
14
115
228
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Maintenance]]"
wikitext
text/x-wiki
[[Category:Maintenance]]
a106a39e26c77e7b2ec90cb83728a6446cb6a1a1
Module:Mbox/doc
828
116
230
2021-08-16T20:00:48Z
FANDOM
3
getting rid of a red link for the documentation
wikitext
text/x-wiki
This module is used by most of the basic [[:Category:Notice templates|Notice templates]] and is invoked by {{t|MessageBox}}.
f4a47833d87441e40c6613bb641eb72f6207cbb1
Module:Mbox/data/doc
828
117
232
2021-08-16T20:00:48Z
FANDOM
3
to get rid of a red link for documentation
wikitext
text/x-wiki
This is a sub-module of [[Module:Mbox]] and is used to specify the CSS properties for message boxes.
fcd42c844d485c7da3317a85c9521ea96145cb35
Module:Quote/doc
828
118
234
2021-08-16T20:00:48Z
FANDOM
3
to get rid of the red link for the documentation
wikitext
text/x-wiki
This module is used by most of the basic [[:Category:Quote templates|Quote templates]] and is invoked by {{t|Quote}}.
665dce984d14e47c31477a42382fecb536de1da7
Module:Dialogue/doc
828
119
236
2021-08-16T20:00:48Z
FANDOM
3
getting rid of red links
wikitext
text/x-wiki
This module is invoked by the {{t|Dialogue}} template.
d22c926bd1a5c2221b42dc1a05b2326ecaaa6712
Module:Hatnote/doc
828
120
238
2021-08-16T20:00:48Z
FANDOM
3
getting rid of red links
wikitext
text/x-wiki
This module is invoked by the {{t|Hatnote}} template, which is used by a number of [[:Category:Notice templates|Notice templates]].
b5c1fc43f0f6bd96416f2fec21a7da0b34ae8aac
Module:Navbox/doc
828
121
240
2021-08-16T20:00:48Z
FANDOM
3
getting rid of red links
wikitext
text/x-wiki
This module is invoked by the {{t|Navbox}} template. Navbox templates are not displayed for mobile users.
23d4ed4b22c8bf7316431e1f6df6d4d5d9de1ef5
Module:Namespace detect/doc
828
122
242
2021-08-16T20:00:48Z
FANDOM
3
getting rid of red links
wikitext
text/x-wiki
This module is invoked by the {{t|Namespace}} template.
157d889ae2f345f719a68f459ee2ca550d14afb5
Module:Namespace detect/data/doc
828
123
244
2021-08-16T20:00:48Z
FANDOM
3
Created page with "This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons."
wikitext
text/x-wiki
This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons.
4b5f88c95a81f026633adaae2556eeaa2896fd6f
Module:Namespace detect/config/doc
828
124
246
2021-08-16T20:00:48Z
FANDOM
3
Created page with "This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language. To activate a configuration item, you need to u..."
wikitext
text/x-wiki
This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language.
To activate a configuration item, you need to uncomment it. This means that you need to remove the text "-- " at the start of the line.
5b3ec654956a66588b67fedc310584e2769e6f5c
Template:Series
10
125
248
2021-08-16T20:00:48Z
FANDOM
3
Created page with "<includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption" /></image> <dat..."
wikitext
text/x-wiki
<includeonly><infobox>
<title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title>
<image source="image"><caption source="caption" /></image>
<data source="release"><label>First released</label></data>
<data source="seasons"><label>Seasons</label></data>
<data source="episodes"><label>Episodes</label></data>
<data source="runtime"><label>Run time</label></data>
<data source="genre"><label>Genre</label></data>
<data source="network"><label>Network</label></data>
<data source="distrib"><label>Distributor</label></data>
<data source="creator"><label>Created by</label></data>
<data source="writer"><label>Written by</label></data>
<data source="director"><label>Directed by</label></data>
<data source="composer"><label>Composer</label></data>
<data source="based on"><label>Based on</label></data>
<data source="exec prod"><label>Executive producer</label></data>
<data source="producer"><label>Producer</label></data>
<data source="prod co"><label>Production company</label></data>
<data source="country"><label>Country</label></data>
<data source="language"><label>Language</label></data>
</infobox></includeonly><noinclude>{{documentation}}</noinclude>
f2e00daecd3f3df5c31267e0a9ffd721ac2f186d
Template:Series/doc
10
126
250
2021-08-16T20:00:48Z
FANDOM
3
Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..."
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Series
| title =
| image =
| caption =
| release =
| seasons =
| episodes =
| runtime =
| genre =
| network =
| distrib =
| creator =
| writer =
| director =
| composer =
| based on =
| exec prod =
| producer =
| prod co =
| country =
| language =
}}</pre>
== Sample output ==
{{Series
| title = ''Default page title''
| image = Wiki.png
| caption = Test
| release = Test
| seasons = Test
| episodes = Test
| runtime = Test
| genre = Test
| network = Test
| distrib = Test
| creator = Test
| writer = Test
| director = Test
| composer = Test
| based on = Test
| exec prod = Test
| producer = Test
| prod co = Test
| country = Test
| language = Test
}}
<pre>{{Series
| title = ''Default page title''
| image = Wiki.png
| caption = Test
| release = Test
| seasons = Test
| episodes = Test
| runtime = Test
| genre = Test
| network = Test
| distrib = Test
| creator = Test
| writer = Test
| director = Test
| composer = Test
| based on = Test
| exec prod = Test
| producer = Test
| prod co = Test
| country = Test
| language = Test
}}</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
7f9a7daecb805234290cd4addefc0c049fe125ce
Template:Film
10
127
252
2021-08-16T20:00:48Z
FANDOM
3
Created page with "<includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption"/></image> <g..."
wikitext
text/x-wiki
<includeonly><infobox>
<title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title>
<image source="image"><caption source="caption"/></image>
<group>
<data source="premiere"><label>Premiere date</label></data>
<data source="genre"><label>Genre</label></data>
<data source="rating"><label>Rating</label></data>
<data source="runtime"><label>Runtime</label></data>
<data source="director"><label>Directed by</label></data>
<data source="writer"><label>Written by</label></data>
<data source="music"><label>Music by</label></data>
<data source="producer"><label>Produced by</label></data>
<data source="budget"><label>Budget</label></data>
<data source="earned"><label>Box Office</label></data>
</group>
<group layout="horizontal">
<header>Series</header>
<data source="previous"><label>← Previous</label></data>
<data source="next"><label>Next →</label></data>
</group>
</infobox>{{Namespace|main=[[Category:Films]]}}</includeonly><noinclude>{{documentation}}</noinclude>
92b5337f22ec52309cba873beaf3cdb11d2f64e0
Template:Film/doc
10
128
254
2021-08-16T20:00:48Z
FANDOM
3
Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..."
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Film
| title =
| image =
| caption =
| premiere =
| genre =
| rating =
| runtime =
| director =
| writer =
| music =
| producer =
| budget =
| earned =
| previous =
| next =
}}
</pre>
== Sample output ==
{{Film
| title = This is a test
| image = Wiki.png
| caption = This is a test
| premiere = This is a test
| genre = This is a test
| rating = This is a test
| runtime = This is a test
| director = This is a test
| writer = This is a test
| music = This is a test
| producer = This is a test
| budget = This is a test
| earned = This is a test
| previous = This is a test
| next = This is a test
}}
<pre>
{{Film
| title = This is a test
| image = Wiki.png
| caption = This is a test
| premiere = This is a test
| genre = This is a test
| rating = This is a test
| runtime = This is a test
| director = This is a test
| writer = This is a test
| music = This is a test
| producer = This is a test
| budget = This is a test
| earned = This is a test
| previous = This is a test
| next = This is a test
}}
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
b085f97e35a2ac96b5ddf92a22e98fbd93933736
Template:Season
10
129
256
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly><infobox type="Season">
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"><caption source="caption"/></image>
<data source="season"><label>Season</label></data>
<data source="episodes"><label>Episodes</label></data>
<data source="premiere"><label>Premiered</label></data>
<group layout="horizontal">
<header>Navigation</header>
<data source="previous"><label>← Previous</label></data>
<data source="next"><label>Next →</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Seasons]]}}</includeonly><noinclude>{{documentation}}</noinclude>
2e09c5f43c99d98363971b63ad639874c5e6c452
Template:Season/doc
10
130
258
2021-08-16T20:00:48Z
FANDOM
3
Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..."
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Season
| title =
| image =
| caption =
| season =
| episodes =
| premiere =
| previous =
| next =
}}
</pre>
== Sample output ==
{{Season
| title = This is a test
| image = Wiki.png
| caption = This is a test
| season = This is a test
| episodes = This is a test
| premiere = This is a test
| previous = This is a test
| next = This is a test
}}
<pre>
{{Season
| title = This is a test
| image = Wiki.png
| caption = This is a test
| season = This is a test
| episodes = This is a test
| premiere = This is a test
| previous = This is a test
| next = This is a test
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
b3f82f2223cf6f8323820bce6de5427e4b6a1380
Template:Cast
10
131
260
2021-08-16T20:00:48Z
FANDOM
3
Created page with "<includeonly><infobox> <title source="name"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption" /></image> <data><label>Born..."
wikitext
text/x-wiki
<includeonly><infobox>
<title source="name"><default>{{PAGENAME}}</default></title>
<image source="image"><caption source="caption" /></image>
<data><label>Born</label>
<default>{{#if: {{{birthname|}}} | {{{birthname|}}} }}{{#if: {{{birthdate|}}} | {{#if: {{{birthname|}}} | <br />}}{{{birthdate|}}}{{#if: {{{birthplace|}}} | <br />}} }}{{#if: {{{birthplace|}}} | {{#if: {{{birthdate|}}} || {{#if: {{{birthname|}}}|<br />}} }}{{{birthplace|}}} }}</default>
</data>
<data><label>Died</label>
<default>{{#if: {{{deathdate|}}} | {{{deathdate|}}} }}{{#if: {{{deathplace|}}} | {{#if: {{{deathdate|}}} | <br />}}{{{deathplace|}}} }}</default>
</data>
<data source="gender"><label>Gender</label></data>
<data source="height"><label>Height</label></data>
<data source="occupation"><label>Occupation</label></data>
<data source="appears in"><label>Appears in</label></data>
<data source="portrays"><label>Portrays</label></data>
</infobox>{{Namespace|main=[[Category:Cast]]<!--
-->{{#if: {{#pos:{{{appears in|}}} | TITLE}} | [[Category:TITLE cast]] }}<!--
-->}}</includeonly><noinclude>{{documentation}}</noinclude>
b1e4767be7d53e599ae3ac18e9f41dff90fdfe89
Template:Cast/doc
10
132
262
2021-08-16T20:00:48Z
FANDOM
3
Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..."
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Cast
| name =
| image =
| caption =
| birthname =
| birthdate =
| birthplace =
| deathdate =
| deathplace =
| gender =
| height =
| occupation =
| appears in =
| portrays =
}}
</pre>
== Sample output ==
{{Cast
| name = Test
| image = Wiki.png
| caption = Test
| birthname = Name
| birthdate = Date
| birthplace = Place
| deathdate = Date
| deathplace = Place
| gender = Test
| height = Test
| occupation = Test
| appears in = Test
| portrays = Test
}}
<pre>
{{Cast
| name = Test
| image = Wiki.png
| caption = Test
| birthname = Name
| birthdate = Date
| birthplace = Place
| deathdate = Date
| deathplace = Place
| gender = Test
| height = Test
| occupation = Test
| appears in = Test
| portrays = Test
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
fea3e74e01ad2f66bb54f921f82426cb1a7fa748
Template:Cite web
10
133
264
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
<includeonly>{{
#if: {{#if: {{{url|}}} | {{#if: {{{title|}}} |1}}}}
||Error on call to [[Template:cite web]]: Parameters '''url''' and '''title''' must be specified
}}{{
#if: {{{archiveurl|}}}{{{archivedate|}}}
| {{#if: {{#if: {{{archiveurl|}}}| {{#if: {{{archivedate|}}} |1}}}}
||Error on call to [[template:cite web]]: Parameters '''archiveurl''' and '''archivedate''' must be both specified or both omitted
}}
}}{{#if: {{{author|}}}{{{last|}}}
| {{#if: {{{authorlink|}}}
| [[{{{authorlink}}}|{{#if: {{{last|}}}
| {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }}
| {{{author}}}
}}]]
| {{#if: {{{last|}}}
| {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }}
| {{{author}}}
}}
}}
}}{{#if: {{{author|}}}{{{last|}}}
| {{#if: {{{coauthors|}}}| <nowiki>;</nowiki> {{{coauthors}}} }}
}}{{#if: {{{author|}}}{{{last|}}}|
{{#if: {{{date|}}}
|  ({{{date}}})
| {{#if: {{{year|}}}
| {{#if: {{{month|}}}
|  ({{{month}}} {{{year}}})
|  ({{{year}}})
}}
}}
|}}
}}{{#if: {{{last|}}}{{{author|}}}
| . }}{{
#if: {{{editor|}}}
|  {{{editor}}}:
}}{{#if: {{{archiveurl|}}}
| {{#if: {{{archiveurl|}}} | {{#if: {{{title|}}} | [{{{archiveurl}}} {{{title}}}] }}}}
| {{#if: {{{url|}}} | {{#if: {{{title|}}} | [{{{url}}} {{{title}}}] }}}}
}}{{#if: {{{language|}}} |  <span style="font-size: 0.95em; font-weight: bold; color:#555; position: relative;">({{{language}}})</span>
}}{{#if: {{{format|}}}
|  ({{{format|}}})
}}{{#if: {{{work|}}}
| . ''{{{work}}}''
}}{{#if: {{{pages|}}}
|  {{{pages}}}
}}{{#if: {{{publisher|}}}
| . {{{publisher}}}{{#if: {{{author|}}}{{{last|}}}
|
| {{#if: {{{date|}}}{{{year|}}}{{{month|}}} || }}
}}
}}{{#if: {{{author|}}}{{{last|}}}
||{{#if: {{{date|}}}
|  ({{{date}}})
| {{#if: {{{year|}}}
| {{#if: {{{month|}}}
|  ({{{month}}} {{{year}}})
|  ({{{year}}})
}}
}}
}}
}}.{{#if: {{{archivedate|}}}
|  Archived from [{{{url}}} the original] on {{#time:F j, Y|{{{archivedate}}}}}{{#if: {{{archiveyear|}}} | , {{{archiveyear}}} }}.
}}{{#if: {{{accessdate|}}}
|  Retrieved on {{#time:F j, Y|{{{accessdate}}}}}{{#if: {{{accessyear|}}} | , {{{accessyear}}} }}.
}}{{#if: {{{accessmonthday|}}}
|  Retrieved on {{{accessmonthday}}}, {{{accessyear}}}.
}}{{#if: {{{accessdaymonth|}}}
|  Retrieved on {{{accessdaymonth}}} {{{accessyear}}}.
}}{{#if: {{{quote|}}}
| “{{{quote}}}”
}}</includeonly><noinclude>{{documentation}}
</noinclude>
06085b03744dda1cb654deed7c8e92495d7593a6
Template:Cite web/doc
10
134
266
2021-08-16T20:00:48Z
FANDOM
3
Created page with "__NOTOC__ This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprec..."
wikitext
text/x-wiki
__NOTOC__
This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprecated [[Wikipedia:Template:Teb reference|template:web reference]]. It provides lower case parameters only.
A general discussion of the use of templates for adding citation of open-source web content to Wikipedia articles is available at [[Wikipedia:Citation templates|citation templates]].
This page uses [[w:Wikia:Licensing|Creative Commons Licensed]] content from [[w:c:Wookieepedia:Template:Cite web|Wookieepedia]]
== Usage ==
;Common form for cases where little is known about authorship of the page (with current date)
<tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |format= |work= }}</nowiki></tt>
;Using last, first (with current date)
<tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;Using author (with current date)
<tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;Using non-linked retrieved date, last, first
<tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;Using non-linked retrieved date, author
<tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;All parameters, horizontal format (delete the ones you don't need)
<tt><nowiki>{{Cite web |url= |title= |accessdate= |accessmonthday= |accessdaymonth = |accessyear= |author= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;All parameters, vertical format
<pre>{{Cite web
| url =
| title =
| accessdate =
| accessdaymonth =
| accessmonthday =
| accessyear =
| author =
| last =
| first =
| authorlink =
| coauthors =
| date =
| year =
| month =
| format =
| work =
| publisher =
| pages =
| language =
| archiveurl =
| archivedate =
| quote =
}}</pre>
=== Required parameters ===
* '''url''': URL of online item.
* '''title''': Title of online item.
''For producing a [[Wikipedia:WP:CONTEXT#Dates|wikilinked date]] of retrieval:''
:* '''accessdate''': Full date when item was accessed, in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, for example "accessdate = {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}". ''Must not be wikilinked''
''For producing a non-wikilinked date of retrieval:''
:* '''accessmonthday''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = May 10", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on May 10, 2006.''
:* '''accessdaymonth''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = 10 May", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on 10 May 2006.''
=== Optional parameters ===
* '''author''': Author
** '''last''' works with '''first''' to produce <code>last, first</code>
** '''authorlink''' works either with '''author''' or with '''last''' & '''first''' to link to the appropriate wikipedia article. Does not work with URLs.
** '''coauthors''': allows additional authors
* '''date''': Full date of publication, preferably in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. May be wikilinked.
** OR: '''year''': Year of publication, and '''month''': Name of the month of publication. If you also have the day, use ''date'' instead. Must not be wikilinked.
* '''format''': Format, e.g. PDF. HTML implied if not specified.
* '''work''': If this item is part of a larger work, name of that work.
* '''publisher''': Publisher, if any.
* '''pages''': ''pp. 5–7'': first page and optional last page. This is for listing the pages relevant to the citation, not the total number of pages in the book. This is especially useful for PDF format, where the page can be linked to with the <code>#page=''number''</code> anchor tagged on the end of the URL:
*: <code><nowiki>pages = [http://www.example.org/file.pdf#page=123 p. 123]</nowiki></code>
* '''language''': language of publication (don't specify "English" as this is the default).
* '''archiveurl''': URL of the archive location of the item (requires '''archivedate''')
* '''archivedate''': Date when the item was archived (requires '''archiveurl'''), in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. Must not be wikilinked; it will be linked automatically.
* '''quote''': Relevant quote from online item.
== Examples ==
;Some standard use cases
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| publisher=Open Publishing
| date=2005-04-30
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| date=2005-04-30
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| date=2005-04-30
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06}}</span>
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span>
* <nowiki>{{Cite web
| title=My Favorite Things Part II
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span>
* <nowiki>{{Cite web
| url=http://www.nfl.com/fans/
| title=Digest of Rules
| publisher= National Football League
| accessdate=2005-07-06
}}</nowiki><br>→ <span style="background:white">{{cite web | url=http://www.nfl.com/fans/
| title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</span>
;Non-linking date of retrieval (using accessmonthday and accessyear)
* <nowiki>{{Cite web
| title=My Favorite Things Part II
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessmonthday=July 6
| accessyear=2005
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=My Favorite Things Part II
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessmonthday=July 6
| accessyear=2005
}}</span>
;Using format
* <nowiki>{{Cite web
| title=List of psychotropic substances under international control
| publisher = International Narcotics Control Board
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=List of psychotropic substances under international control
| publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF | accessdate=2005-07-06}}</span>
;language
* <nowiki>{{Cite web
| author=Joliet, François
| title=Honnit soit qui mal y pense
| date=2005-04-30
| url=http://www.example.org/
| accessdate=2005-07-06
| language=French
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06 | language=French}}</span>
;coauthors
* <nowiki>{{Cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16
}}</nowiki><br/>→ <span style="background:white">{{cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span>
;No author
* <nowiki>{{Cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16
}}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span>
;No author, no publisher
* <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06
}}</nowiki></br>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web
| title=List of psychotropic substances under international control
| date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
| language=Greek
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=List of psychotropic substances under international control | date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06
| language=Greek }}</span>
; Using archiveurl and archivedate to refer to items that went away but are available from an archive site
* <nowiki>{{Cite web
| title=List of psychotropic substances under international control
| date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
| archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf
| archivedate=2005-09-11
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=List of psychotropic substances under international control
| date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
| archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf
| archivedate=2005-09-11 }}</span>
* <nowiki>
{{Cite web
|url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm
|title=Interview with Maggie Downs
|date=2006-03-31
|publisher=The Desert Sun
|archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm
|archivedate=2006-04-26
}}</nowiki><br/> → <span style="background:white">{{cite web
|url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm
|title=Interview with Maggie Downs
|date=2006-03-31
|publisher=The Desert Sun
|archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm
|archivedate=2006-04-26}}</span>
; Using quote
* <nowiki>{{Cite web
| title = My Favorite Things Part II
| work = Encyclopedia of Things
| url = http://www.example.org/
| accessdate = 2005-07-06
| quote = Lorem ipsum dolor.
}}</nowiki><br/>→ <span style="background:white">{{cite web
| title = My Favorite Things Part II
| work = Encyclopedia of Things
| url = http://www.example.org/
| accessdate = 2005-07-06
| quote = Lorem ipsum dolor.
}}</span>
;No parameters (error)
* <nowiki>{{Cite web}}</nowiki><br/>→ <span style="background:white">{{cite web}}</span>
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
49566b6a3601a57e7e4d3521179ec7d3300ec2a1
VAST SPACE ARCHIVES: Beeleth Wiki:Wiki rules
4
135
268
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
Below is a suggested set of rules to follow when editing this wiki. Administrators of this wiki should read these rules and adapt them as necessary.
# '''Keep it civil''': Do not make personal attacks on other people. If you need to criticize another user’s argument, do so without attacking them as a person. Do not use bigoted language, including slurs which degrade another person or group of people based on gender, race, sexual orientation, nationality, religion, etc.
# '''Be a productive member of the wiki''': Contribute to the wiki in line with the established processes and conventions. Need help? Ask an [[Special:ListUsers/sysop|administrator]]! Disrupting the wiki with “edit warring” over differing opinions of a topic with another user or group of users is not productive.
# '''Do not engage in excessive self-promotion''': The wiki is a collaborative community resource for the topic at hand. It is NOT a free place to advertise your related website, YouTube channel, blog, social media account, etc. Have a question about whether your link would be welcome? Ask an administrator!
# '''Do not harass other users''': If somebody asks you to stop posting certain content on their wall, respect their wishes. It is their wall.
# '''Do follow community guidelines for formatting''': When a community has established formatting, it’s important to adhere to that, especially when spoiler content is involved.
[[Category:{{SITENAME}}]]
efad0088b04516c5e666314530cc43875a74fd71
Blog:Recent posts
0
136
270
2021-08-16T20:00:48Z
FANDOM
3
Created article for recent blog posts
wikitext
text/x-wiki
<bloglist summary="true" count=50><title>⧼create-blog-post-recent-listing-title ⧽</title><type>plain</type><order>date</order></bloglist>
afb902f1d8c2d7adccbdd48b1fbd4a0cc5361783
Category:Blog posts
14
137
272
2021-08-16T20:00:48Z
FANDOM
3
wikitext
text/x-wiki
This is an automatically generated list of blog posts
[[Category:Community]]
864f70c2af84fd84c1901d154b90eb4facc9f37c
Category:Community
14
138
274
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:{{SITENAME}}]]"
wikitext
text/x-wiki
[[Category:{{SITENAME}}]]
dd8aaa34cf600c1567d240a3f4bc615164a11592
Category:Pages with broken file links
14
139
276
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Maintenance]]"
wikitext
text/x-wiki
[[Category:Maintenance]]
a106a39e26c77e7b2ec90cb83728a6446cb6a1a1
Category:Videos
14
140
278
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Media]]"
wikitext
text/x-wiki
[[Category:Media]]
b141d2b9971d6efe9f59bd03449781e71411c631
Category:Screenshots
14
141
280
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Images]]"
wikitext
text/x-wiki
[[Category:Images]]
8820b63e35aedd9d2666fe40b965d4e91ce0a106
Category:Wiki skin images
14
142
282
2021-08-16T20:00:48Z
FANDOM
3
Created page with "[[Category:Images]]"
wikitext
text/x-wiki
[[Category:Images]]
8820b63e35aedd9d2666fe40b965d4e91ce0a106
MediaWiki:Mainpage
8
143
284
2021-08-16T20:00:48Z
FANDOM
3
SEO
wikitext
text/x-wiki
BEELETH Wiki
788e216c683159d2e7fb2731fdbe1c0517dc9321
Main Page
0
1
286
2021-08-16T20:00:48Z
FANDOM
3
FANDOM moved page [[Main Page]] to [[BEELETH Wiki]]: SEO
wikitext
text/x-wiki
#REDIRECT [[BEELETH Wiki]]
ee117f54bffab5d46c550eaaf8e853fc6a9b1851
File:Site-background-dark
6
144
288
2021-08-16T21:03:25Z
beeleth>Beeleth
0
Beeleth uploaded a new version of [[File:Site-background-dark]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Site-logo.png
6
146
292
2021-08-16T21:03:27Z
beeleth>Beeleth
0
Protected "[[File:Site-logo.png]]": Theme designer protected image ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite))
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Site-favicon.ico
6
147
294
2021-08-16T21:03:27Z
beeleth>Beeleth
0
Protected "[[File:Site-favicon.ico]]": Theme designer protected image ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite))
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:RealBEELETH.jpg
6
150
300
2021-08-16T21:40:19Z
beeleth>Beeleth
0
REAL?????
wikitext
text/x-wiki
== Summary ==
REAL?????
== Licensing ==
{{Self}}
9a923cc36699a221e4f3d827d811d18c0d13ba52
File:Mephistopheles.png
6
151
302
2021-08-16T22:15:19Z
beeleth>Beeleth
0
Mephistopheles' pose.
wikitext
text/x-wiki
== Summary ==
Mephistopheles' pose.
== Licensing ==
{{Self}}
5478da25c043ac3e9f6284da73e6d5473627463f
File:Beeleth.png
6
152
304
2021-08-16T22:16:06Z
beeleth>Beeleth
0
Beeleth's pose.
wikitext
text/x-wiki
== Summary ==
Beeleth's pose.
== Licensing ==
{{Self}}
1dfbad80f58f8978af6540f16a2c0db8cfe711c8
Lucifer the Morning Star
0
154
308
2021-08-16T23:50:59Z
beeleth>Beeleth
0
Redirected page to [[Emperor Satan]]
wikitext
text/x-wiki
#REDIRECT [[Emperor Satan]]
6be8eff933204ba1a16a150b699f234f34125df0
Satan
0
155
310
2021-08-16T23:51:28Z
beeleth>Beeleth
0
Redirected page to [[Emperor Satan]]
wikitext
text/x-wiki
#REDIRECT [[Emperor Satan]]
6be8eff933204ba1a16a150b699f234f34125df0
Lucifer
0
157
314
2021-08-16T23:53:02Z
beeleth>Beeleth
0
Redirected page to [[Emperor Satan]]
wikitext
text/x-wiki
#REDIRECT [[Emperor Satan]]
6be8eff933204ba1a16a150b699f234f34125df0
Template:General Location
10
159
318
2021-08-17T00:41:12Z
beeleth>Beeleth
0
Created page with "<infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <..."
wikitext
text/x-wiki
<infobox>
<title source="title1"/>
<image source="image1">
<caption source="caption1"/>
</image>
<data source="universe">
<label>Universe</label>
</data>
<data source="location">
<label>Location</label>
</data>
<data source="capital">
<label>Capital</label>
</data>
<data source="sector">
<label>Sector</label>
</data>
<group>
<header>In-Universe</header>
<data source="founder">
<label>Founder</label>
</data>
<data source="leader">
<label>Leader</label>
</data>
<data source="creation">
<label>Creation</label>
</data>
<data source="population">
<label>Population</label>
</data>
<data source="notable_people">
<label>Notable People</label>
</data>
</group>
</infobox>
<noinclude>
Example usage:
<pre>
{{General Location
| title1=Example
| image1=Example
| caption1=Example
| universe=Example
| location=Example
| capital=Example
| sector=Example
| founder=Example
| leader=Example
| creation=Example
| population=Example
| notable_people=Example
}}
</pre>
<templatedata>
{"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"universe":{"suggested":true},"location":{"suggested":true},"capital":{"suggested":true},"sector":{"suggested":true},"founder":{"suggested":true},"leader":{"suggested":true},"creation":{"suggested":true},"population":{"suggested":true},"notable_people":{"suggested":true}},"sets":[],"maps":{}}
</templatedata>
</noinclude>
89aa34d77ed89da199f5ef3dc305d38ed3c7f064
Cuperosa the Star-Crossed
0
160
320
2021-08-17T16:01:02Z
beeleth>Beeleth
0
Redirected page to [[King Beeleth]]
wikitext
text/x-wiki
#REDIRECT [[King Beeleth]]
9bfa365dd4a5e6fe3d7ed91e668364015e9141e2
Cuperosa
0
161
322
2021-08-17T16:01:26Z
beeleth>Beeleth
0
Redirected page to [[King Beeleth]]
wikitext
text/x-wiki
#REDIRECT [[King Beeleth]]
9bfa365dd4a5e6fe3d7ed91e668364015e9141e2
Template:General Plot
10
162
324
2021-08-17T16:05:59Z
beeleth>Beeleth
0
Created page with "<infobox> <title source="title1"/> <image source="image1"> <caption source="caption1"/> </image> <data source="universe"> <label>Universe</label> </data> <..."
wikitext
text/x-wiki
<infobox>
<title source="title1"/>
<image source="image1">
<caption source="caption1"/>
</image>
<data source="universe">
<label>Universe</label>
</data>
<data source="space">
<label>Space</label>
</data>
<data source="activity_history">
<label>Activity History</label>
</data>
<group>
<header>In-Universe</header>
<data source="setting">
<label>Setting</label>
</data>
<data source="locations">
<label>Locations</label>
</data>
<data source="condition">
<label>Condition</label>
</data>
</group>
</infobox>
<noinclude>
Example usage:
<pre>
{{General Plot
| title1=Example
| image1=Example
| caption1=Example
| universe=Example
| space=Example
| activity_history=Example
| setting=Example
| locations=Example
| condition=Example
}}
</pre>
<templatedata>
{"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"universe":{"suggested":true},"space":{"suggested":true},"activity_history":{"suggested":true},"setting":{"suggested":true},"locations":{"suggested":true},"condition":{"suggested":true}},"sets":[],"maps":{}}
</templatedata>
</noinclude>
1ee5e1516ab0662aefe3461800f1225b7fe04f45
File:Site-background-light
6
145
290
2021-08-17T23:22:48Z
beeleth>Beeleth
0
Beeleth uploaded a new version of [[File:Site-background-light]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Template parameter usage
10
221
441
2021-08-21T18:02:56Z
beeleth>SUM1
0
Added missing "lc" parameters; added optional "based" parameter to add text "based on this[/its] TemplateData" at end of template
wikitext
text/x-wiki
{{#switch:{{{label|}}}
|=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
|for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
}}<noinclude>
{{documentation}}
</noinclude>
b9cdd1b2e409313904f041c38562a3d6221cc017
Template:TemplateData header
10
220
439
2021-08-29T21:32:29Z
beeleth>SUM1
0
Added "based" parameter to other transclusion
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage|based=y}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->[[Wikipedia:TemplateData|TemplateData]]}}<!--
e.o. #if:nolink; DEFAULT:
--> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
ddfbb4ae793846b96d4c06330417fa6ed4da2adc
Module:Sidebar/styles.css
828
206
409
2021-09-20T01:15:45Z
beeleth>Goszei
0
self-rv, it's a little tight
text
text/plain
/* {{pp-template}} */
/* TODO: Invert width design to be "mobile first" */
.sidebar {
/* TODO: Ask if we should have max-width 22em instead */
width: 22em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
/* @noflip */
margin: 0.5em 0 1em 1em;
background: #f8f9fa;
border: 1px solid #aaa;
padding: 0.2em;
text-align: center;
line-height: 1.4em;
font-size: 88%;
border-collapse: collapse;
/* Timeless has display: none on .nomobile at mobile resolutions, so we
* unhide it with display: table and let precedence and proximity win.
*/
display: table;
}
/* Unfortunately, so does Minerva desktop, except Minerva drops an
* !important on the declaration. So we have to be mean for Minerva users.
* Mobile removes the element entirely with `wgMFRemovableClasses` in
* https://github.com/wikimedia/operations-mediawiki-config/blob/master/
wmf-config/InitialiseSettings.php#L16992
* which is why displaying it categorically with display: table works.
* We don't really want to expose the generic user in the wild on mobile to have
* to deal with sidebars. (Maybe the ones with collapsible lists, so that
* might be an improvement. That is blocked on [[:phab:T111565]].)
*/
body.skin-minerva .sidebar {
display: table !important;
/* also, minerva is way too aggressive about other stylings on tables.
* TODO remove when this template gets moved to a div. plans on talk page.
* We always float right on Minerva because that's a lot of extra CSS
* otherwise. */
float: right !important;
margin: 0.5em 0 1em 1em !important;
}
.sidebar-subgroup {
width: 100%;
margin: 0;
border-spacing: 0;
}
.sidebar-left {
/* @noflip */
float: left;
/* @noflip */
clear: left;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-none {
float: none;
clear: both;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-outer-title {
padding: 0 0.4em 0.2em;
font-size: 125%;
line-height: 1.2em;
font-weight: bold;
}
.sidebar-top-image {
padding: 0.4em;
}
.sidebar-top-caption,
.sidebar-pretitle-with-top-image,
.sidebar-caption {
padding: 0.2em 0.4em 0;
line-height: 1.2em;
}
.sidebar-pretitle {
padding: 0.4em 0.4em 0;
line-height: 1.2em;
}
.sidebar-title,
.sidebar-title-with-pretitle {
padding: 0.2em 0.8em;
font-size: 145%;
line-height: 1.2em;
}
.sidebar-title-with-pretitle {
padding: 0.1em 0.4em;
}
.sidebar-image {
padding: 0.2em 0.4em 0.4em;
}
.sidebar-heading {
padding: 0.1em 0.4em;
}
.sidebar-content {
padding: 0 0.5em 0.4em;
}
.sidebar-content-with-subgroup {
padding: 0.1em 0.4em 0.2em;
}
.sidebar-above,
.sidebar-below {
padding: 0.3em 0.8em;
font-weight: bold;
}
.sidebar-collapse .sidebar-above,
.sidebar-collapse .sidebar-below {
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.sidebar-navbar {
text-align: right;
font-size: 115%;
padding: 0 0.4em 0.4em;
}
.sidebar-list-title {
padding: 0 0.4em;
text-align: left;
font-weight: bold;
line-height: 1.6em;
font-size: 105%;
}
/* centered text with mw-collapsible headers is finicky */
.sidebar-list-title-c {
padding: 0 0.4em;
text-align: center;
margin: 0 3.3em;
}
@media (max-width: 720px) {
/* users have wide latitude to set arbitrary width and margin :(
"Super-specific" selector to prevent overriding this appearance by
lower level sidebars too */
body.mediawiki .sidebar {
width: 100% !important;
clear: both;
float: none !important; /* Remove when we div based; Minerva is dumb */
margin-left: 0 !important;
margin-right: 0 !important;
}
/* TODO: We might consider making all links wrap at small resolutions and then
* only introduce nowrap at higher resolutions. Do when we invert the media
* query.
*/
}
7d621b35a37807a103b59075851fe36201204ceb
Module:Unsubst
828
320
629
2021-10-08T18:22:16Z
vast>Trappist the monk
0
sync from sandbox; see [[Module_talk:Unsubst#template_invocation_name_override|talk]];
Scribunto
text/plain
local checkType = require('libraryUtil').checkType
local p = {}
local BODY_PARAM = '$B'
local specialParams = {
['$params'] = 'parameter list',
['$aliases'] = 'parameter aliases',
['$flags'] = 'flags',
['$B'] = 'template content',
['$template-name'] = 'template invocation name override',
}
function p.main(frame, body)
-- If we are substing, this function returns a template invocation, and if
-- not, it returns the template body. The template body can be specified in
-- the body parameter, or in the template parameter defined in the
-- BODY_PARAM variable. This function can be called from Lua or from
-- #invoke.
-- Return the template body if we aren't substing.
if not mw.isSubsting() then
if body ~= nil then
return body
elseif frame.args[BODY_PARAM] ~= nil then
return frame.args[BODY_PARAM]
else
error(string.format(
"no template content specified (use parameter '%s' from #invoke)",
BODY_PARAM
), 2)
end
end
-- Sanity check for the frame object.
if type(frame) ~= 'table'
or type(frame.getParent) ~= 'function'
or not frame:getParent()
then
error(
"argument #1 to 'main' must be a frame object with a parent " ..
"frame available",
2
)
end
-- Find the invocation name.
local mTemplateInvocation = require('Module:Template invocation')
local name
if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then
name = frame.args['$template-name'] -- override whatever the template name is with this name
else
name = mTemplateInvocation.name(frame:getParent():getTitle())
end
-- Combine passed args with passed defaults
local args = {}
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
else
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
end
-- Trim parameters, if not specified otherwise
if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then
for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end
end
-- Pull information from parameter aliases
local aliases = {}
if frame.args['$aliases'] then
local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' )
for k, v in ipairs( list ) do
local tmp = mw.text.split( v, '%s*>%s*' )
aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2])
end
end
for k, v in pairs( aliases ) do
if args[k] and ( not args[v] or args[v] == '' ) then
args[v] = args[k]
end
args[k] = nil
end
-- Remove empty parameters, if specified
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then
local tmp = 0
for k, v in ipairs( args ) do
if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then
tmp = k
else
break
end
end
for k, v in pairs( args ) do
if v == '' then
if not (type(k) == 'number' and k < tmp) then args[k] = nil end
end
end
end
-- Order parameters
if frame.args['$params'] then
local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {}
for k, v in ipairs(params) do
v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v
if args[v] then tmp[v], args[v] = args[v], nil end
end
for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end
args = tmp
end
return mTemplateInvocation.invocation(name, args)
end
p[''] = p.main -- For backwards compatibility
return p
7f01ffc8aa2ac4a4772f14c12e0b77e384ecabb6
Help:Infobox/user style
12
231
461
2021-10-11T22:29:09Z
beeleth>Izno
0
adjust in preparation for infoboxes going to TemplateStyles
wikitext
text/x-wiki
{{{heading|
==Infoboxes and user style ==
}}}
Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers.
To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself:
<syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight>
Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]:
<syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight>
Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article.<!--
Needs Special:Mypage/common.js options for:
* Making infoboxes collapsible
** Making them auto-collapsed
* Moving infoboxes to bottom of page
--><noinclude>
{{Documentation|content=
This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant.
As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code>
}}
</noinclude>
6da0d499b1fda33a6ba13b40e6605692fc3bb489
Template:Module other
10
237
473
2021-10-20T19:50:22Z
beeleth>MusikBot II
0
Changed protection settings for "[[Template:Module other]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3570 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Module}}
| module
| other
}}
}}
| module = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
503694836c1b07142e63fd35d8be69ec8bb9ffe7
Template:Main other
10
178
349
2021-12-10T16:08:06Z
beeleth>Xaosflux
0
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}
| main
| other
}}
}}
| main = {{{1|}}}
| other
| #default = {{{2|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
86ad907ffeea3cc545159e00cd1f2d6433946450
Module:Lua banner
828
224
447
2021-12-10T22:30:39Z
beeleth>Fayenatic london
0
Update categories, see [[Wikipedia:Categories for discussion/Log/2021 October 31]]
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation'] = 'Templates based on the Citation/CS1 Lua module'
}
categories['Module:Citation/CS1'] = categories['Module:Citation']
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
6e3bedcc849ff22d4f702708965c39b97d7e8585
Module:Hatnote list
828
198
393
2021-12-26T20:05:24Z
beeleth>Nihiltres
0
Undid revision 1062166786 by [[Special:Contributions/Matthiaspaul|Matthiaspaul]] ([[User talk:Matthiaspaul|talk]]); should be fixed now, and if not, please ping me with examples as I couldn't reproduce the original error
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote list --
-- --
-- This module produces and formats lists for use in hatnotes. In particular, --
-- it implements the for-see list, i.e. lists of "For X, see Y" statements, --
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced --
-- are andList & orList helpers for formatting lists with those conjunctions. --
--------------------------------------------------------------------------------
local mArguments --initialize lazily
local mFormatLink = require('Module:Format link')
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
--------------------------------------------------------------------------------
-- List stringification helper functions
--
-- These functions are used for stringifying lists, usually page lists inside
-- the "Y" portion of "For X, see Y" for-see items.
--------------------------------------------------------------------------------
--default options table used across the list stringification functions
local stringifyListDefaultOptions = {
conjunction = "and",
separator = ",",
altSeparator = ";",
space = " ",
formatted = false
}
--Searches display text only
local function searchDisp(haystack, needle)
return string.find(
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle
)
end
-- Stringifies a list generically; probably shouldn't be used directly
local function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
if #list == 0 then return nil end
checkType("stringifyList", 2, options, "table", true)
options = options or {}
for k, v in pairs(stringifyListDefaultOptions) do
if options[k] == nil then options[k] = v end
end
local s = options.space
-- Format the list if requested
if options.formatted then
list = mFormatLink.formatPages(
{categorizeMissing = mHatnote.missingTargetCat}, list
)
end
-- Set the separator; if any item contains it, use the alternate separator
local separator = options.separator
for k, v in pairs(list) do
if searchDisp(v, separator) then
separator = options.altSeparator
break
end
end
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"
local conjunction = s .. options.conjunction .. s
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then
conjunction = separator .. conjunction
end
-- Return the formatted string
return mw.text.listToText(list, separator .. s, conjunction)
end
--DRY function
function p.conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
end
-- Stringifies lists with "and" or "or"
function p.andList (...) return p.conjList("and", ...) end
function p.orList (...) return p.conjList("or", ...) end
--------------------------------------------------------------------------------
-- For see
--
-- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the
-- {{about}} and {{redirect}} templates and their variants.
--------------------------------------------------------------------------------
--default options table used across the forSee family of functions
local forSeeDefaultOptions = {
andKeyword = 'and',
title = mw.title.getCurrentTitle().text,
otherText = 'other uses',
forSeeForm = 'For %s, see %s.',
}
--Collapses duplicate punctuation
local function punctuationCollapse (text)
local replacements = {
["%.%.$"] = ".",
["%?%.$"] = "?",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "?]]",
["%!%]%]%.$"] = "!]]"
}
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end
return text
end
-- Structures arguments into a table for stringification, & options
function p.forSeeArgsToTable (args, from, options)
-- Type-checks and defaults
checkType("forSeeArgsToTable", 1, args, 'table')
checkType("forSeeArgsToTable", 2, from, 'number', true)
from = from or 1
checkType("forSeeArgsToTable", 3, options, 'table', true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- maxArg's gotten manually because getArgs() and table.maxn aren't friends
local maxArg = 0
for k, v in pairs(args) do
if type(k) == 'number' and k > maxArg then maxArg = k end
end
-- Structure the data out from the parameter list:
-- * forTable is the wrapper table, with forRow rows
-- * Rows are tables of a "use" string & a "pages" table of pagename strings
-- * Blanks are left empty for defaulting elsewhere, but can terminate list
local forTable = {}
local i = from
local terminated = false
-- If there is extra text, and no arguments are given, give nil value
-- to not produce default of "For other uses, see foo (disambiguation)"
if options.extratext and i > maxArg then return nil end
-- Loop to generate rows
repeat
-- New empty row
local forRow = {}
-- On blank use, assume list's ended & break at end of this loop
forRow.use = args[i]
if not args[i] then terminated = true end
-- New empty list of pages
forRow.pages = {}
-- Insert first pages item if present
table.insert(forRow.pages, args[i + 1])
-- If the param after next is "and", do inner loop to collect params
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3}
while args[i + 2] == options.andKeyword do
if args[i + 3] then
table.insert(forRow.pages, args[i + 3])
end
-- Increment to next "and"
i = i + 2
end
-- Increment to next use
i = i + 2
-- Append the row
table.insert(forTable, forRow)
until terminated or i > maxArg
return forTable
end
-- Stringifies a table as formatted by forSeeArgsToTable
function p.forSeeTableToString (forSeeTable, options)
-- Type-checks and defaults
checkType("forSeeTableToString", 1, forSeeTable, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Stringify each for-see item into a list
local strList = {}
if forSeeTable then
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local pagesStr =
p.andList(v.pages, true) or
mFormatLink._formatLink{
categorizeMissing = mHatnote.missingTargetCat,
link = mHatnote.disambiguate(options.title)
}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
table.insert(strList, forSeeStr)
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
return table.concat(strList, ' ')
end
-- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps
-- but not blank/whitespace values. Ignores named args and args < "from".
function p._forSee (args, from, options)
local forSeeTable = p.forSeeArgsToTable(args, from, options)
return p.forSeeTableToString(forSeeTable, options)
end
-- As _forSee, but uses the frame.
function p.forSee (frame, from, options)
mArguments = require('Module:Arguments')
return p._forSee(mArguments.getArgs(frame), from, options)
end
return p
d0828422b1aa0d0d0092d699d059c9e882260398
Module:Navbar/styles.css
828
201
399
2022-01-03T23:12:15Z
beeleth>Izno
0
navbar styles that were moved to parent templates
text
text/plain
/* {{pp|small=yes}} */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar-collapse {
float: left;
text-align: left;
}
.navbar-boxtext {
word-spacing: 0;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
line-height: inherit;
}
.navbar-brackets::before {
margin-right: -0.125em;
content: '[ ';
}
.navbar-brackets::after {
margin-left: -0.125em;
content: ' ]';
}
.navbar li {
word-spacing: -0.125em;
}
.navbar a > span,
.navbar a > abbr {
text-decoration: inherit;
}
.navbar-mini abbr {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
.navbar-ct-full {
font-size: 114%;
margin: 0 7em;
}
.navbar-ct-mini {
font-size: 114%;
margin: 0 4em;
}
9d4056f949b4f0b159e3d40dfb1a5f01e72f9571
Emperor Satan
0
156
312
2022-01-06T10:43:16Z
beeleth>Beeleth
0
wikitext
text/x-wiki
{{General_Character|gender=Cisgender<br> <small>• he/him</small>|birth=First Angel Wave|real_name=Satan<br> Lucifer the Morning Star (formerly)|title1=Emperor Satan|species=Fallen seraph|theme_song=[https://www.youtube.com/watch?v=hPMnIymc3Cs Lemon Demon - Spiral of Ants]|caption1=Design as of 2021|orientation=Gay|universe=[[Pride of the Peacock Angel]]|residence=[[Lemegeton]]|title=Hellish Emperor of Fallen Stars|sector=Raven Sector|image1=[[Satan.png]]|affiliation=[[Lucifer's Rebellion]]|voice_claim=[https://www.youtube.com/watch?v=ETEg-SB01QY Andrew VanWyngarden]|nickname(s)=Luci<br> Fern<br> The Devil<br>|relationships=[[Kyrie]] <small>(crush)</small><br>[[Great Prince Mephistopheles|Mephistopheles]] <small>(spawn)</small><br>[[Great Prince Pruflas|Pruflas]] <small>(spawn)</small><br>[[Great Prince Beelzebub|Beelzebub]] <small>(spawn)</small>}}''Not to be confused with [[Great Prince Beelzebub]].''
Emperor Satan is the ruler of the entirety of [[Hell]], residing in the Raven sector which contains the capital, [[Lemegeton]]. His only subordinates who he actively works with as Hellish Emperor are the three Great Princes: [[Great Prince Beelzebub|Beelzebub]], [[Great Prince Pruflas|Pruflas]], and [[Great Prince Mephistopheles|Mephistopheles]].
He was formerly known as Lucifer the Morning Star, the brightest star in [[Heaven]] under [[Kyrie]] until he was banished and turned into a fallen [[Abstract angels|angel]] following a [[Lucifer's Rebellion|rebellion]] he led. He has strong one-sided feelings towards Kyrie.
== Story ==
=== Heaven ===
a
=== Unrest and Rebellion ===
a
=== Fall from Heaven ===
a
== Personality ==
a
== Abilities ==
# '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks [[Cacophonic]], which is the language of demons. As well as that, he is able to understand all other [[Mortals|mortal]] languages and respond in them even if he doesn't recognize he is speaking in it.
#* Like [[Duchess Astaroeth]], he is able to read and write all languages as long as it was not written directly by a divine being.
# '''Communicating to animals:''' He can understand and communicate with all animals. He is most like a goat, so he understands goats the best and vice versa. His second best "animal language" is that of snakes.
# '''Flight and levitation:''' Satan is able to fly and levitate. He does not need his wings to levitate, but they help him fly and glide. Flight takes more energy than levitation, so he avoids doing it whenever possible; however, it is faster than most other means of transportation he can provide himself.
# '''Using minimal teleportation:''' By thinking about a nearby location, he can reach it near-instantly as long as he can fit himself there. He can chain teleportation to go further than he would with just one attempt.
# '''Melting and shapeshifting:''' He is naturally always fluid-like, as he is composed mostly of Abstract substance. He can become more liquid at will and, along with that, change his shape easily. He is completely reshapable, and if this power is combined with his ability to manipulate light, he can appear exactly as he pleases at any time. He can compress or expand himself to appear smaller or larger respectively, but he cannot become too large or else he will be weaker.
# Harvesting souls:
# '''Mimicking:''' He can mimic sounds, music, and voices as long as he is familiar with how they sound. He can do so with things he hasn't heard personally before if he has access to memories of it.
# Manipulating sound:
# '''Manipulating light:''' Since Abstract angels are personified stars and he is what remains of one, he can manipulate light and create illusions. The blue and white parts of his body are made of light, so he can change them as he wishes.
#* He can completely and utterly disregard physics and turn light into weapons, tools, or whatever else he pleases. He often uses his halo for this.
# Summoning/creating demons and familiars:
# '''Using advanced psychokinesis:''' He can manipulate objects, people, and certain elements (see 14-17 for more information) easily by gesturing or thinking about it. His range is much larger than a regular psychokinetic demon, and encompasses the entirety of Hell and even further beyond it. In order to affect something, he must be aware of it; he does not need to know its current whereabouts to do so. He can affect the inside and outside of whatever he is manipulating. He has no actual limit on how many things he can affect at once.
#* If he really wishes, he can use his powers to shred apart the internal organs of the entire population of a large city and kill them all, and there would be no way to know it was him. However, there are better things to do than that, and he knows it.
# '''Using advanced possession:''' He is capable of possessing most if not all vessels, even if they are already being controlled by someone else (including natural bodies). Most of the time, unless he makes a mental or physical disruption, it's often impossible to tell someone has been possessed by him, even to the controller of the vessel. It's possible for him to sit in the "background" or take over the body completely.
#* Though he was initially forced out of his body and into a noncorporeal form from the impact of the fall, his body and soul are somewhat conjoined nowadays in a sense. If he is removed from a body he is possessing by force and it is not his own, he will likely appear physically rather than spiritually.
#* Astaroeth created a vessel, [[Zenko]], mainly for Satan's use but also for any demons who aren't capable of advanced possession, as Zenko's soul is incomplete and seeks certain types of souls to complete it.
# '''Using advanced telepathy:''' By focusing on a person or group of people, he is able to infiltrate their mind and access most if not all of their thoughts and memories; he can also plant his own thoughts and memories within the front of their mind or the deepest recesses of it. Along with this, he can erase thoughts and memories. He is also able to create one-way or two-way communication channels carried by thoughts.
#* He is immune to most other telepathy unless it is being carried out via a particularly powerful telepath or just someone/something more powerful than him in general.
#* He is able to use these powers for hypnosis and brainwashing purposes, and it is much, much easier than doing so without powers.
# Using cryomancy:
# Using aquamancy:
# Using geomancy:
# Using pyromancy:
# '''Entering homeostasis:''' Though it can be considered a weakness, Satan can enter homeostasis if he is overwhelmed or needs to recharge/retain energy. While in this state, he often creates a near-impenetrable highly compressed shield of Abstract susbstance around himself and allows his light to freely shape itself within the shield. If he enters this state out of his free will, he is likely able to exit it as he wishes; if he is forced to take this state, he will remain in it until his body is recharged.
#* It's nearly impossible to force him out of homeostasis unless he wishes for it.
#* Upon the impact of his fall from heaven, he entered a homeostasis-like state, albeit without his soul intact. The only difference is that he was unable to retain his ice powers and he slowly froze the crater he created. He remained like this for several hundreds of years.
== Relationships ==
=== Kyrie ===
abfasjkhjgabbgnjsk
=== Great Princes ===
The Great Princes are considered to be Satan's sons, but they are technically unrelated aside from being created as a result of his emotions reacting to Abstract substance at the time of his impact on Earth. His view of each of the princes varies, since they're based on different aspects of him and remind him of different people.
==== Mephistopheles ====
agoashgau
==== Pruflas ====
ashguofassafisanfas
==== Beelzebub ====
aiugsbohisnafaijfns
=== Underlings ===
Since he is the ruler of the entirety of Hell and oversees most legal activity within it, he has met most demons since those who have a position of any sort work for him. He has known most of the highest-ranking demons for the longest, as many of them were once angels like he was.
== Trivia ==
* Following King Beeleth, he was the second Pride of the Peacock Angel character ever created. They initially had a more personal relationship, with Beeleth being one of his direct subordinates rather than governing another circle of Hell away from him.
*His first design was more visually ice-related and didn't have Abstract substance because it didn't exist at the time of his actual creation.
== Related Pages ==
* [[Lucifer's Rebellion]], a major historical/plot event in [[Pride of the Peacock Angel]]
*[[Lemegeton]], the capital of Hell
[[Category:Pride of the Peacock Angel]]
[[Category:Characters]]
[[Category:LGBT+ Characters]]
[[Category:Neurodivergent Characters]]
[[Category:Fallen Angels]]
[[Category:Abstract Demons]]
[[Category:Shapeshifters]]
[[Category:Iconic Characters]]
90b553a3a03778b3575704422e67d47bac323770
Hell
0
158
316
2022-01-06T12:34:33Z
beeleth>Beeleth
0
wikitext
text/x-wiki
{{General Location|title1=Hell|universe=[[Pride of the Peacock Angel]]|location=[[Earth_(PotPA)|Earth]]|capital=Lemegeton|founder=[[Emperor Satan]]|leader=[[Emperor Satan]]|creation=Post-Rebellion|population=Undefined|notable_people=[[Emperor Satan]]}}
Hell is the place that was created directly as a result of [[Lucifer's Rebellion]] falling from [[Heaven]], and it was originally a large crater caused by the impact of [[Emperor Satan|Satan]]'s fall. It was later turned into an entire city split into sectors ruled by kings and queens under Satan's rule.
== Lemegeton ==
hello
[[Category:Location]]
[[Category:Abstract Space]]
[[Category:Pride of the Peacock Angel]]
c389d026ba84809649976e3df1fc3f73453ea702
Module:Infobox/styles.css
828
183
359
2022-01-18T15:18:00Z
beeleth>Jdlrobson
0
Fix [[phab:T281642]], a pet peeve of mine. This copies across styles from [[MediaWiki:Minerva.css]]
text
text/plain
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
Module:Documentation/config
828
213
425
2022-01-25T23:46:11Z
beeleth>Ianblair23
0
link
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
71b68ed73088f1a59d61acf06bbee9fde6677f03
Module:TableTools
828
185
363
2022-01-31T13:08:18Z
beeleth>MSGJ
0
updates/fixes requested by [[User:Uzume]]
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = _deepCopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if valueToFind is a member of the array, and false otherwise.
------------------------------------------------------------------------------------
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
085e7094ac84eb0132ee65822cf3f69cd8ba3d81
Template:Documentation subpage
10
216
431
2022-02-09T04:09:32Z
beeleth>Bsherr
0
semantic emphasis, shortening emphasized phrase
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
{{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
932915be87123dcf74687ffca846a3130a6a52af
Module:Check for unknown parameters
828
181
355
2022-02-21T05:24:13Z
beeleth>BusterD
0
Changed protection settings for "[[Module:Check for unknown parameters]]": [[WP:High-risk templates|Highly visible template]]; requested at [[WP:RfPP]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
local knownargs = {}
local regexps = {}
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
-- loop over the parent args, and make sure they are on the list
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local values = {}
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(tostring(k), regexp) then
knownflag = true
break
end
end
if not knownflag and ( showblankpos or isnotempty(v) ) then
table.insert(values, k .. ' = ' .. clean(v))
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local unknown_text = args['unknown'] or 'Found _VALUE_, '
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
local preview_text = args['preview']
if isnotempty(preview_text) then
preview_text = require('Module:If preview')._warning({preview_text})
elseif preview == nil then
preview_text = unknown_text
end
unknown_text = preview_text
end
for _, v in pairs(values) do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
if v == '' then v = ' ' end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
93db6d115d4328d2a5148bb42959105e367b663e
Module:Effective protection expiry
828
193
381
2022-02-23T10:59:29Z
beeleth>Xaosflux
0
Changed protection settings for "[[Module:Effective protection expiry]]": used in the mediawiki interface / match [[Module:Effective protection level]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
local p = {}
-- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title)
return stabilitySettings and stabilitySettings.expiry or 'unknown'
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )
end
local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename)
if rawExpiry == 'infinity' then
return 'infinity'
elseif rawExpiry == '' then
return 'unknown'
else
local year, month, day, hour, minute, second = rawExpiry:match(
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$'
)
if year then
return string.format(
'%s-%s-%sT%s:%s:%s',
year, month, day, hour, minute, second
)
else
error('internal error in Module:Effective protection expiry; malformed expiry timestamp')
end
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
9a8c58dc2667232ed08a9b206a5d89ca8150312b
Module:Template link general
828
188
369
2022-03-08T08:30:51Z
beeleth>Primefac
0
update from sandbox - fixes to _show_result and adding _expand
Scribunto
text/plain
-- This implements Template:Tlg
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Is a string non-empty?
local function _ne(s)
return s ~= nil and s ~= ""
end
local nw = mw.text.nowiki
local function addTemplate(s)
local i, _ = s:find(':', 1, true)
if i == nil then
return 'Template:' .. s
end
local ns = s:sub(1, i - 1)
if ns == '' or mw.site.namespaces[ns] then
return s
else
return 'Template:' .. s
end
end
local function trimTemplate(s)
local needle = 'template:'
if s:sub(1, needle:len()):lower() == needle then
return s:sub(needle:len() + 1)
else
return s
end
end
local function linkTitle(args)
if _ne(args.nolink) then
return args['1']
end
local titleObj
local titlePart = '[['
if args['1'] then
-- This handles :Page and other NS
titleObj = mw.title.new(args['1'], 'Template')
else
titleObj = mw.title.getCurrentTitle()
end
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or
addTemplate(args['1']))
local textPart = args.alttext
if not _ne(textPart) then
if titleObj ~= nil then
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText
else
-- redlink
textPart = args['1']
end
end
if _ne(args.subst) then
-- HACK: the ns thing above is probably broken
textPart = 'subst:' .. textPart
end
if _ne(args.brace) then
textPart = nw('{{') .. textPart .. nw('}}')
elseif _ne(args.braceinside) then
textPart = nw('{') .. textPart .. nw('}')
end
titlePart = titlePart .. '|' .. textPart .. ']]'
if _ne(args.braceinside) then
titlePart = nw('{') .. titlePart .. nw('}')
end
return titlePart
end
function p.main(frame)
local args = getArgs(frame, {
trim = true,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)
local italic = _ne(args.italic) or _ne(args.italics)
local dontBrace = _ne(args.brace) or _ne(args.braceinside)
local code = _ne(args.code) or _ne(args.tt)
local show_result = _ne(args._show_result)
local expand = _ne(args._expand)
-- Build the link part
local titlePart = linkTitle(args)
if bold then titlePart = "'''" .. titlePart .. "'''" end
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end
-- Build the arguments
local textPart = ""
local textPartBuffer = "|"
local codeArguments = {}
local codeArgumentsString = ""
local i = 2
local j = 1
while args[i] do
local val = args[i]
if val ~= "" then
if _ne(args.nowiki) then
-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will
-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up
val = nw(mw.text.unstripNoWiki(val))
end
local k, v = string.match(val, "(.*)=(.*)")
if not k then
codeArguments[j] = val
j = j + 1
else
codeArguments[k] = v
end
codeArgumentsString = codeArgumentsString .. textPartBuffer .. val
if italic then
val = '<span style="font-style:italic;">' .. val .. '</span>'
end
textPart = textPart .. textPartBuffer .. val
end
i = i + 1
end
-- final wrap
local ret = titlePart .. textPart
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end
if _ne(args.a) then ret = nw('*') .. ' ' .. ret end
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end
if code then
ret = '<code>' .. ret .. '</code>'
elseif _ne(args.plaincode) then
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'
end
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end
--[[ Wrap as html??
local span = mw.html.create('span')
span:wikitext(ret)
--]]
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end
if show_result then
local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments}
ret = ret .. " → " .. result
end
if expand then
local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}')
local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query)
mw.log()
ret = ret .. " [" .. tostring(url) .. "]"
end
return ret
end
return p
c7307fa3959d308a2dd7fd2f5009c1ce6db3d122
Module:InfoboxImage
828
322
637
2022-03-13T19:18:18Z
vast>WOSlinker
0
add class param from sandbox as per edit request
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- class - HTML classes to add to the image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center = frame.args["center"];
local class = frame.args["class"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if class ~= nil and class ~= "" then
result = result .. "|class=" .. class;
end
-- if alt value is a keyword then do not use as a description
if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil;
end
if title ~= "" and title ~= nil then
-- does title param contain any templatestyles? If yes then set to blank.
if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil;
end
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
end
result = result .. "]]";
return result;
end
end
return i;
0ee5fe75ba239fc5c9cedc81ca11bdc0be068542
Template:Documentation
10
5
421
8
2022-03-29T02:14:34Z
beeleth>Bsherr
0
consistent with new substitution template format
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
9
8
2022-11-10T22:14:25Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary"
|- style="font-size:18px;"
! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div>
|-
| ''Note: portions of the template sample may not be visible without values provided.''
|-
| View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]])
|-
| Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages.
|}
<div style="margin:0 1em;">
{{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude>
ee98b7264ecdfefae4fda4e94a64c1d0e275ee55
Template:Module rating
10
238
475
2022-06-03T15:10:23Z
beeleth>The Anome
0
Reverted edits by [[Special:Contribs/Dawn PScLim|Dawn PScLim]] ([[User talk:Dawn PScLim|talk]]) to last version by Alexis Jazz
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox
| type = notice
| image = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]]
| alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]]
| beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]]
| release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]]
| protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]]
| semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]]
}}
| style =
| textstyle =
| text = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }}
}}
| alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }}
}}
| beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }}
}}
| release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }}
}}
| protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| #default = {{error|Module rating is invalid or not specified.}}
}}
}}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude>
{{module rating|release|nocat=true|demospace=module}}
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc
Module:High-use
828
222
443
2022-06-12T23:44:07Z
beeleth>NguoiDungKhongDinhDanh
0
Comma should not be bolded (via [[:m:User:NguoiDungKhongDinhDanh/CodeAjaxEditor.js|CAE]])
Scribunto
text/plain
local p = {}
-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
function p.num(frame, count)
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 100000 then
sigfig = 3
end
-- Prepare to round to appropriate number of sigfigs
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
if percent >= 1 then
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
end
return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
local return_value = ""
if frame.args[1] == "risk" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 100000 then return_value = "risk" end
end
return return_value
end
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
-- is actually editing the page and maybe trying to update the count.
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or ''
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
local systemMessages = frame.args['system']
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), p.num(frame, count))
local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used ';
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and ("''', and " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. "'''"
end
local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.'
if infoArg then
info = info .. "<br />" .. infoArg
end
sandbox_text = info .. '<br /> To avoid major disruption' ..
(count and count >= 100000 and ' and server load' or '') ..
', any changes should be tested in the ' .. sandbox_text ..
'The tested changes can be added to this page in a single edit. '
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') ..
'hanges may be widely noticed. Test changes in the ' .. sandbox_text
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text
end
function p.main(frame)
local count = nil
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
local epilogue = ''
if frame.args['system'] and frame.args['system'] ~= '' then
image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame.args['nocat']
local categorise = (nocat == '' or not yesno(nocat))
if categorise then
epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 100000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
} .. epilogue
else
return require('Module:Message box').main('ombox', {
type = type_param,
image = image,
text = p.text(frame, count),
expiry = (frame.args["expiry"] or "")
}) .. epilogue
end
end
return p
e65a49e327a83e27b6a35ceff8dce344edee0840
Template:Clear
10
84
373
166
2022-06-13T15:31:11Z
beeleth>Xaosflux
0
Changed protection settings for "[[Template:Clear]]": [[WP:High-risk templates|Highly visible template]]: 3MM+ uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<div style="clear:{{{1|both}}};"></div><noinclude>
{{documentation}}
</noinclude>
38bab3e3d7fbd3d6800d46556e60bc6bac494d72
Module:Uses TemplateStyles/config
828
241
481
2022-06-16T15:10:06Z
beeleth>Pppery
0
Matching reality rather than 2018 me's wishful thinking
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the
-- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css
-- Set to nil to disable sandbox links.
cfg['sandbox_title'] = 'sandbox'
-- Error category: this category is added if the module call contains errors
-- (e.g. no stylesheet listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Uses TemplateStyles templates with errors'
-- Default category: this category is added if no custom category is specified
-- in module/template call. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Templates using TemplateStyles'
-- Protection conflict category: this category is added if the protection level
-- of any stylesheet is lower than the protection level of the template. A category name
-- without namespace, or nil to disable categorization (not recommended).
cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level'
-- Hierarchy of protection levels, used to determine whether one protection level is lower
-- than another and thus should populate protection_conflict_category. No protection is treated as zero
cfg['protection_hierarchy'] = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
-- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil
-- to disable padlock check.
cfg['padlock_pattern'] = '{{pp-'
-- Missing padlock category: this category is added if a protected stylesheet
-- doesn’t contain any padlock template (specified by the above Lua pattern).
-- A category name without namespace (no nil allowed) if the pattern is not nil,
-- unused (and thus may be nil) otherwise.
cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks'
return cfg -- Don’t touch this line.
58e7a37c44f6ea3f6b8af54a559d696cc7256493
Module:Uses TemplateStyles
828
240
479
2022-06-16T15:13:38Z
beeleth>Pppery
0
Matching reality rather than 2018 me's wishful thinking
Scribunto
text/plain
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local TNT = require('Module:TNT')
local p = {}
local function format(msg, ...)
return TNT.format('I18n/Uses TemplateStyles', msg, ...)
end
local function getConfig()
return mw.loadData('Module:Uses TemplateStyles/config')
end
local function renderBox(tStyles)
local boxArgs = {
type = 'notice',
small = true,
image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
}
if #tStyles < 1 then
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
else
local cfg = getConfig()
local tStylesLinks = {}
for i, ts in ipairs(tStyles) do
local link = string.format('[[:%s]]', ts)
local sandboxLink = nil
local tsTitle = mw.title.new(ts)
if tsTitle and cfg['sandbox_title'] then
local tsSandboxTitle = mw.title.new(string.format(
'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
if tsSandboxTitle and tsSandboxTitle.exists then
sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
end
end
tStylesLinks[i] = sandboxLink or link
end
local tStylesList = mList.makeList('bulleted', tStylesLinks)
boxArgs.text = format(
mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
'\n' .. tStylesList
end
return mMessageBox.main('mbox', boxArgs)
end
local function renderTrackingCategories(args, tStyles, titleObj)
if yesno(args.nocat) then
return ''
end
local cfg = getConfig()
local cats = {}
-- Error category
if #tStyles < 1 and cfg['error_category'] then
cats[#cats + 1] = cfg['error_category']
end
-- TemplateStyles category
titleObj = titleObj or mw.title.getCurrentTitle()
if (titleObj.namespace == 10 or titleObj.namespace == 828)
and not cfg['subpage_blacklist'][titleObj.subpageText]
then
local category = args.category or cfg['default_category']
if category then
cats[#cats + 1] = category
end
if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then
local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil
local addedLevelCat = false
local addedPadlockCat = false
for i, ts in ipairs(tStyles) do
local tsTitleObj = mw.title.new(ts)
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
local content = tsTitleObj:getContent()
if not content:find(cfg['padlock_pattern']) then
cats[#cats + 1] = cfg['missing_padlock_category']
addedPadlockCat = true
end
end
if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then
currentProt = cfg['protection_hierarchy'][currentProt] or 0
tsProt = cfg['protection_hierarchy'][tsProt] or 0
if tsProt < currentProt then
addedLevelCat = true
cats[#cats + 1] = cfg['protection_conflict_category']
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
function p._main(args, cfg)
local tStyles = mTableTools.compressSparseArray(args)
local box = renderBox(tStyles)
local trackingCategories = renderTrackingCategories(args, tStyles)
return box .. trackingCategories
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
return p
71ca57c37849f38e3c5ee30061bdae730963e48e
King Beeleth
0
153
306
2022-07-08T23:40:03Z
beeleth>Beeleth
0
wikitext
text/x-wiki
{{General_Character|title1=King Beeleth|real_name=Beeleth<br> Cuperosa the Star-Crossed (formerly)|nickname(s)=Beel<br> Byleth<br> Beleth<br> Bileth|voice_claim=[https://youtu.be/4x40W0Pu3Fc Cecilia姉貴兄貴]|universe=[[Pride of the Peacock Angel]]|title=Hellish King of Love|affiliation=[[Lucifer's Rebellion]]|sector=Felis Sector|orientation=Panromantic asexual|kills=[[Galatea]]|image1=<gallery>
Beelethv2wings.png|V2
Beelethv1wings.png|V1
Beelethmaidwings.png|Maid
Beelethcasualwings.png|Casual
</gallery>|caption1=Design as of 2021|theme_song=[https://youtu.be/LctLOhm2CqU john - 宴]|classification=|birth=First Angel Wave|species=[[Abstract angel|Cherub]] (formerly)<br> [[Abstract demon|Fallen cherub]]|gender=Unspecified<br> <small>• he/him<br> • they/them</small>|residence=[[Heaven]] (formerly)<br> [[Hell]]|relationships=[[Galatea]] (lover)<br> [[Emperor Satan]] (leader)<br> [[Prince Sytri]] (like a son)<br>}}
''Not to be confused with [[BEELETH]], King Beeleth's real-world creator.''
{{Quote|quote=Please... leave me alone.|speaker=Beeleth}}
'''King Beeleth''' is one of several Hellish Kings designated by [[Satan]] himself, and he resides over the Felis sector in [[Hell]] along with his subordinates. Much like [[King Bael]], he is known for being miserable; however, he is also known to be cruel but pacifist, which is a strange combination. He is often in hiding to avoid speaking to others. In the list of all [[Pride of the Peacock Angel]] demons, he is the 13<sup>th</sup> total.
Prior to [[Lucifer's Rebellion]] in [[Heaven]], he was known as Cuperosa the Star-Crossed and was somewhat kinder because his lover, [[Galatea]], was still alive; however, he was overly possessive of her and was often aggressive to others because of his fear of losing her.
== Story ==
[[File:Cuperosa.png|alt=Cuperosa|left|250x250px|Cuperosa]]
=== Heaven ===
Cuperosa was created by [[Kyrie]] during the first wave of angels to represent and protect the very concept of true love. However, he was largely inactive during this period because he did not have anyone to truly love himself; as well as this, most other angels weren't interested in romance among themselves. One of the only other angels he would talk to about such things was [[Lucifer the Morning Star]], who had one-sided but intense feelings towards Kyrie that he could not discuss with others.
He was also given a sentient [[Unicorns|divine steed]], [[Duke Amdusias|Amalthyne the Faithful]], which was to always obey him. The two of them were quite friendly and formed a significant trust between one another. One of the only other angels he would speak to was [[Queen Paimonia|Azazel the Watcher]], who provided infinite wisdom to their fellow angels and was comforting to be around.
During the Second Angel Wave, many more angels of different types were created for different purposes. Among these angels was the archangel Galatea, who was (not known to those other than Kyrie) created to help serve and guide the creations yet to come. Beeleth fell for her instantly and would never leave her alone, but she found his company quite enjoyable and they quite quickly became partners.
=== Unrest and Rebellion ===
When the first [[humans]] were created from Earth's soil, most angels were happy and in awe of Kyrie's power. Others responded in secret with confusion and fear that they wouldn't be loved by Kyrie once more humans were created. These angels would join forces with Lucifer to form a [[Lucifer's Rebellion|rebellion]] against their creator in order to be the only creations remaining in His focus.
Beeleth was not heavily involved in pre-war plans, and actually didn't anticipate the rebellion to become a full-on war at all. However, there was some tension between he and Galatea because of their differing opinions over the creation of humans and the future of the divine; he believed they were at risk of losing Kyrie's care, but she believed that they would all be loved equally in the end. Despite this, she promised to not let anyone dangerous find out about the rebellion's plans.
==== Death of Galatea ====
agagag
=== Fall from Heaven ===
sgsgs
=== fafafa ===
epic
== Personality ==
stuff is here
== Abilities ==
# '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks Cacophonic, which is the language of demons. As well as that, he is able to understand all other mortal languages and respond in them even if he doesn't recognize he is speaking in it. As for reading, it depends on the language.
# '''Communicating to cats:''' Since he is a cat demon, he can understand and communicate with them. He and Sytri understand each other more than they are aware, which makes it hard for them to hide things.
#* Some of his senses are also heightened. He can see better in the dark, smell more things, hear better, and sense things. However, he has a slightly worse sense of taste than normal demons.
# Reshaping energy: wip i dont feel like writing rn
# '''Retracting/moving horns, ears, wings, and tail:''' He is capable of retracting and changing the placement of some of his limbs, but rarely does it because he thinks it's silly and generally useless. This is connected to his shapeshifting ability in that if he doesn't pay enough attention, he will return to normal or regain some of his regular physical traits.
# '''Psychokinesis on mortals and normal objects:''' If they are within his range, he can physically influence the things and people around him as long as they are mortals or objects without any special qualities that would prevent him from doing so.
# '''Shapeshifting:''' Beeleth is able to switch between his normal form, a human form, and a cat form as he pleases. However, he does not like being belittled by others, so he often remains in his regular form.
#* As a human, he goes by the name _.
#* As a cat, he goes by the name _.
# '''Entering blind rage:''' If he sees, experiences, or vividly remembers violence, he will enter a period of blind and violent rage that brings him physical pain and increases his physical and demonic strength exponentially. He will change out of any non-demonic form that he is currently in whenever he enters his rage state.
#* In order to exit his rage state, he must calm down and/or run out of energy. It takes him a much longer time than his regular state to run out of energy completely, so depending on the situation, it might be easier to calm him down. However, it may be hard to calm him down during his rage state.
# '''Altering personal bonds:''' He can change the way people feel about each other, which includes friendship, love, and many other types of feelings. He cannot use these powers on himself, deities, or other demons of rank. He is capable of combining this power with his energy-reshaping ability, which allows him to use energy projectiles as vessels for his bonding ability; this also works on regular weapons and projectiles.
== Relationships ==
=== Satan ===
Although they were once close, they have become more distant partially due to the rebellion's failure as well as Satan's physical condition following the fall from Heaven.
=== Kyrie ===
Beeleth views Kyrie as cruel.
=== Amdusias ===
Beeleth has become annoyed at Amdusias because of his current behavior and intentionally annoying nature.
=== Sytri ===
Beeleth cares for Sytri in an almost fatherly way, but is afraid to admit it because he worries that he will hurt the ones he loves.
=== Galatea ===
He feels immense guilt over the death of Galatea because he never thought that they would one day be apart, especially at his own hand. He still has periods of obsessive remorse related to the incident, and will lock himself away during them due to the intense feelings of violence and pain he gets during them.
== Gallery ==
<gallery>
File:Beelref.png|2021 reference sheet
File:Beeleth.png|Full-body transparent image from 2021 reference sheet
File:Beelcool.png|In combat using his energy reshaping ability
</gallery>
== Trivia ==
* Beeleth was originally made as BEELETH's booksona sometime before 2018 and was heavily inspired by Beleth from Floraverse, but was changed over time to be more personal and distinct.
** He is named Beeleth rather than Beleth solely because of Bee Movie jokes.
* Cuperosa was designed to have his wings resemble broken hearts, and Beeleth's horns are meant to resemble a heart if his left horn is not broken.
* His 2021 incarnation is based on his 2020 incarnation.
** That incarnation was based on the secondary form of his 2018-2019 incarnation.
* He does not have a canon gender, but has canon pronouns.
== Related Pages ==
* [[King]], his alternate incarnation in Art Portfolio Art Academy
[[Category:Pride of the Peacock Angel]]
[[Category:Characters]]
[[Category:LGBT+ Characters]]
[[Category:Neurodivergent Characters]]
[[Category:Fallen Angels]]
[[Category:Abstract Demons]]
[[Category:Iconic Characters]]
[[Category:Shapeshifters]]
57c5fe738d44c42382bde0bbc51b1feb86ceecb4
BEELETH
0
149
298
2022-07-09T00:07:59Z
beeleth>Beeleth
0
wikitext
text/x-wiki
{{RealPerson}}{{General Character|caption1=Photo taken in 2021|birth=June 23|affiliation=|voice_claim=[https://www.youtube.com/watch?v=lpRbjrBKvME BEELETH]|nickname(s)=Beel<br> Euclid|gender=Epicene<br>
* they/them
* he/him
* that one/that one's
* no pronouns|title1=BEELETH|title=|species=Human (Filipino-American)|residence=United States|universe=Real World|image1=[[File:RealBEELETH.jpg|alt=Photograph of BEELETH]]|orientation=Unspecified|real_name=Ultimate Awesome Epic Guy 3: Deluxe Edition|relationships=* [https://coolpeoplw.fandom.com/wiki/Cam Cam] (partner)
* [https://coolpeoplw.fandom.com/wiki/Rick Rick] (best friend)
* [https://coolpeoplw.fandom.com/wiki/Chee Chee] (best friend)
* [https://coolpeoplw.fandom.com/wiki/Izzy Izzy] (best friend)}}
''Not to be confused with [[King Beeleth]] from [[Pride of the Peacock Angel]].''
BEELETH is the real-world creator of the character universe detailed in this Wiki as well as the [[BEELETH Wiki]] itself. They are the main editor, but they're fine with others helping too.
They have represented themselves (or at least certain aspects of themselves) through their work as various characters, including but not limited to [[Moss]] and [[King Beeleth]]. Almost all of their other characters also reflect something about them, their personality, their thoughts, and their experiences.
== Inspiration ==
When creating new content, BEELETH takes inspiration from a variety of things, which includes childhood games, shows, and events. They may also take inspiration from current interests as well.
Some of the inspirations that are most noticeable are Pokémon, Sonic the Hedgehog, and Klonoa. There are many other clear influences visible in different characters and their universes, but not frequent enough to be listed here.
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
[[Category:Real]]
9fd9a5393948fa30b90d91f6b839fd90216c8e78
Module:Message box/configuration
828
176
345
2022-07-11T18:19:26Z
beeleth>Izno
0
add templatestyles, remove a variable or two as a result
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css'
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css'
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
b6f0151037e6867b577c8cca32ff297e48697a10
Module:Message box/ombox.css
828
232
463
2022-07-11T18:40:17Z
beeleth>Izno
0
and move mbox-small to 720px here as well
text
text/plain
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
Template:Para
10
211
419
2022-07-22T08:06:17Z
beeleth>TheDJ
0
breakup super long words, so we do not overflow the viewport.
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
06006deea2ed5d552aab61b4332321ab749ae7e8
Template:High-use
10
219
437
2022-08-23T22:14:22Z
beeleth>GKFX
0
Remove all-pages parameter - no longer used.
wikitext
text/x-wiki
{{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! -->
</noinclude>
a3322d1bd47ac03df14fa2090855cff4fede9bc7
Module:Hatnote
828
70
389
138
2022-09-05T18:18:32Z
beeleth>Nihiltres
0
Reordered helper functions (first by export status, then alphabetically) and migrated p.quote upstream from [[Module:Redirect hatnote]] (includes contributions by Tamzin and Nihiltres)
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
local formatLink -- lazily initialise [[Module:Format link]] ._formatLink
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.defaultClasses(inline)
-- Provides the default hatnote classes as a space-separated string; useful
-- for hatnote-manipulation modules like [[Module:Hatnote group]].
return
(inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' ..
'navigation-not-searchable'
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'disambiguation'
return mw.ustring.format('%s (%s)', page, disambiguator)
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Module:Yesno')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return mw.ustring.format(
'<strong class="error">Error: %s%s.</strong>%s',
msg,
helpText,
category
)
end
local curNs = mw.title.getCurrentTitle().namespace
p.missingTargetCat =
--Default missing target category, exported for use in related modules
((curNs == 0) or (curNs == 14)) and
'Articles with hatnote templates targeting a nonexistent page' or nil
function p.quote(title)
--Wraps titles in quotation marks. If the title starts/ends with a quotation
--mark, kerns that side as with {{-'}}
local quotationMarks = {
["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true
}
local quoteLeft, quoteRight = -- Test if start/end are quotation marks
quotationMarks[string.sub(title, 1, 1)],
quotationMarks[string.sub(title, -1, -1)]
if quoteLeft or quoteRight then
title = mw.html.create("span"):wikitext(title)
end
if quoteLeft then title:css("padding-left", "0.15em") end
if quoteRight then title:css("padding-right", "0.15em") end
return '"' .. tostring(title) .. '"'
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
if not s then
return p.makeWikitextError(
'no text specified',
'Template:Hatnote#Errors',
args.category
)
end
return p._hatnote(s, {
extraclasses = args.extraclasses,
selfref = args.selfref
})
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local inline = options.inline
local hatnote = mw.html.create(inline == 1 and 'span' or 'div')
local extraclasses
if type(options.extraclasses) == 'string' then
extraclasses = options.extraclasses
end
hatnote
:attr('role', 'note')
:addClass(p.defaultClasses(inline))
:addClass(extraclasses)
:addClass(options.selfref and 'selfref' or nil)
:wikitext(s)
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' }
} .. tostring(hatnote)
end
return p
3ae1ed7094c5005ca0896395ec9a587287a0bef1
Template:Parameter names example
10
227
453
2022-09-15T17:36:18Z
beeleth>Aidan9382
0
Hatnote should ideally be moved into documentation as to allow users to edit it regardless of the protection on the main template
wikitext
text/x-wiki
<includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
de1e29d6ebc113e9d1649ea6a976625885db8a2f
Module:Documentation
828
212
423
2022-09-29T01:57:36Z
beeleth>Andrybak
0
update code comment according to [[Special:Diff/989669779]]
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' | ') .. ')</span>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink, purgeLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
2fd7faef98df56f55eede30c4ff07b2431823ee1
Module:Format link
828
196
387
2022-10-04T13:37:11Z
beeleth>Pppery
0
Avoid Lua erroring when we run out of expensive parser function calls
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Format link
--
-- Makes a wikilink from the given link and display values. Links are escaped
-- with colons if necessary, and links to sections are detected and displayed
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- the {{format link}} template.
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local mError -- lazily initialise [[Module:Error]]
local yesno -- lazily initialise [[Module:Yesno]]
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
local function maybeItalicize(s, shouldItalicize)
-- Italicize s if s is a string and the shouldItalicize parameter is true.
if s and shouldItalicize then
return '<i>' .. s .. '</i>'
else
return s
end
end
local function parseLink(link)
-- Parse a link and return a table with the link's components.
-- These components are:
-- - link: the link, stripped of any initial colon (always present)
-- - page: the page name (always present)
-- - section: the page name (may be nil)
-- - display: the display text, if manually entered after a pipe (may be nil)
link = removeInitialColon(link)
-- Find whether a faux display value has been added with the {{!}} magic
-- word.
local prePipe, display = link:match('^(.-)|(.*)$')
link = prePipe or link
-- Find the page, if it exists.
-- For links like [[#Bar]], the page will be nil.
local preHash, postHash = link:match('^(.-)#(.*)$')
local page
if not preHash then
-- We have a link like [[Foo]].
page = link
elseif preHash ~= '' then
-- We have a link like [[Foo#Bar]].
page = preHash
end
-- Find the section, if it exists.
local section
if postHash and postHash ~= '' then
section = postHash
end
return {
link = link,
page = page,
section = section,
display = display,
}
end
local function formatDisplay(parsed, options)
-- Formats a display string based on a parsed link table (matching the
-- output of parseLink) and an options table (matching the input options for
-- _formatLink).
local page = maybeItalicize(parsed.page, options.italicizePage)
local section = maybeItalicize(parsed.section, options.italicizeSection)
if (not section) then
return page
elseif (not page) then
return mw.ustring.format('§ %s', section)
else
return mw.ustring.format('%s § %s', page, section)
end
end
local function missingArgError(target)
mError = require('Module:Error')
return mError.error{message =
'Error: no link or target specified! ([[' .. target .. '#Errors|help]])'
}
end
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.formatLink(frame)
-- The formatLink export function, for use in templates.
yesno = require('Module:Yesno')
local args = getArgs(frame)
local link = args[1] or args.link
local target = args[3] or args.target
if not (link or target) then
return missingArgError('Template:Format link')
end
return p._formatLink{
link = link,
display = args[2] or args.display,
target = target,
italicizePage = yesno(args.italicizepage),
italicizeSection = yesno(args.italicizesection),
categorizeMissing = args.categorizemissing
}
end
function p._formatLink(options)
-- The formatLink export function, for use in modules.
checkType('_formatLink', 1, options, 'table')
local function check(key, expectedType) --for brevity
checkTypeForNamedArg(
'_formatLink', key, options[key], expectedType or 'string', true
)
end
check('link')
check('display')
check('target')
check('italicizePage', 'boolean')
check('italicizeSection', 'boolean')
check('categorizeMissing')
-- Normalize link and target and check that at least one is present
if options.link == '' then options.link = nil end
if options.target == '' then options.target = nil end
if not (options.link or options.target) then
return missingArgError('Module:Format link')
end
local parsed = parseLink(options.link)
local display = options.display or parsed.display
local catMissing = options.categorizeMissing
local category = ''
-- Find the display text
if not display then display = formatDisplay(parsed, options) end
-- Handle the target option if present
if options.target then
local parsedTarget = parseLink(options.target)
parsed.link = parsedTarget.link
parsed.page = parsedTarget.page
end
-- Test if page exists if a diagnostic category is specified
if catMissing and (mw.ustring.len(catMissing) > 0) then
local title = nil
if parsed.page then title = mw.title.new(parsed.page) end
if title and (not title.isExternal) then
local success, exists = pcall(function() return title.exists end)
if success and not exists then
category = mw.ustring.format('[[Category:%s]]', catMissing)
end
end
end
-- Format the result as a link
if parsed.link == display then
return mw.ustring.format('[[:%s]]%s', parsed.link, category)
else
return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category)
end
end
--------------------------------------------------------------------------------
-- Derived convenience functions
--------------------------------------------------------------------------------
function p.formatPages(options, pages)
-- Formats an array of pages using formatLink and the given options table,
-- and returns it as an array. Nil values are not allowed.
local ret = {}
for i, page in ipairs(pages) do
ret[i] = p._formatLink{
link = page,
categorizeMissing = options.categorizeMissing,
italicizePage = options.italicizePage,
italicizeSection = options.italicizeSection
}
end
return ret
end
return p
1253bdd2683ee4badc33856bfd5499b09a7dca1f
Module:Protection banner/config
828
203
403
2022-10-06T04:15:13Z
beeleth>Paine Ellsworth
0
per edit request at [[Module talk:Protection banner#Tooltip/title does not match the actual protection level]] - fix appearance of protection level
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|'
.. 'protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',
},
move = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
.. ' from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully-protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Pp'] = {},
['Template:Pp-extended'] = {'ecp'},
['Template:Pp-blp'] = {'blp'},
-- we don't need Template:Pp-create
['Template:Pp-dispute'] = {'dispute'},
['Template:Pp-main-page'] = {'mainpage'},
['Template:Pp-move'] = {action = 'move', catonly = 'yes'},
['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'},
-- we don't need Template:Pp-move-indef
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Pp-office'] = {'office'},
['Template:Pp-office-dmca'] = {'dmca'},
['Template:Pp-pc'] = {action = 'autoreview', small = true},
['Template:Pp-pc1'] = {action = 'autoreview', small = true},
['Template:Pp-reset'] = {'reset'},
['Template:Pp-semi-indef'] = {small = true},
['Template:Pp-sock'] = {'sock'},
['Template:Pp-template'] = {'template', small = true},
['Template:Pp-upload'] = {action = 'upload'},
['Template:Pp-usertalk'] = {'usertalk'},
['Template:Pp-vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
59c408f72ce81e080cce79518231e85981ebcf3b
Template:General Character
10
148
296
2022-10-07T21:57:55Z
beeleth>Beeleth
0
wikitext
text/x-wiki
<infobox>
<title source="title1"/>
<image source="image1">
<caption source="caption1"/>
</image>
<data source="real_name">
<label>Real name</label>
</data>
<data source="nickname(s)">
<label>Nickname(s)</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender and pronouns</label>
</data>
<data source="orientation">
<label>Orientation</label>
</data>
<group collapse="open">
<header>Meta</header>
<data source="creation_date">
<label>Creation date</label>
</data>
<data source="voice_claim">
<label>Voice(s)</label>
</data>
<data source="theme_song">
<label>Theme</label>
</data>
</group>
<group collapse="open">
<header>In-Universe</header>
<data source="universe">
<label>Universe</label>
</data>
<data source="classification">
<label>Classification</label>
</data>
<data source="birth">
<label>Birth</label>
</data>
<data source="residence">
<label>Residence</label>
</data>
<data source="relationships">
<label>Relationships</label>
</data>
<data source="title">
<label>Title</label>
</data>
<data source="rank">
<label>Rank</label>
</data>
<data source="sector">
<label>Sector</label>
</data>
<data source="affiliation">
<label>Affiliation</label>
</data>
</group>
<group collapse="closed">
<header>Potential Spoilers</header>
<data source="death">
<label>Death</label>
</data>
<data source="cause_of_death">
<label>Cause of death</label>
</data>
<data source="trace">
<label>Trace(s)</label>
</data>
<data source="wish">
<label>Wish</label>
</data>
<data source="kills">
<label>Kills</label>
</data>
</group>
</infobox>
<noinclude>
Example usage:
<pre>
{{General Character
| title1=Example
| image1=Example
| caption1=Example
| real_name=Example
| nickname(s)=Example
| species=Example
| gender=Example
| orientation=Example
| creation_date=Example
| voice_claim=Example
| theme_song=Example
| universe=Example
| classification=Example
| birth=Example
| residence=Example
| relationships=Example
| title=Example
| rank=Example
| sector=Example
| affiliation=Example
| death=Example
| cause_of_death=Example
| trace=Example
| wish=Example
| kills=Example
}}
</pre>
<templatedata>
{"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"real_name":{"suggested":true},"nickname(s)":{"suggested":true},"species":{"suggested":true},"gender":{"suggested":true},"orientation":{"suggested":true},"creation_date":{"suggested":true},"voice_claim":{"suggested":true},"theme_song":{"suggested":true},"universe":{"suggested":true},"classification":{"suggested":true},"birth":{"suggested":true},"residence":{"suggested":true},"relationships":{"suggested":true},"title":{"suggested":true},"rank":{"suggested":true},"sector":{"suggested":true},"affiliation":{"suggested":true},"death":{"suggested":true},"cause_of_death":{"suggested":true},"trace":{"suggested":true},"wish":{"suggested":true},"kills":{"suggested":true}},"sets":[],"maps":{}}
</templatedata>
</noinclude>
c1f275f04c540ee81c0c5638b5499bca4aa071ad
BEELETH Wiki
0
2
2
2022-10-10T18:48:46Z
beeleth>Beeleth
0
wikitext
text/x-wiki
<mainpage-leftcolumn-start />
<div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div>
[[File:Abstract.png|left|frameless]]
Weary traveler, your efforts to cross [[Vast Space]] have not been in vain... the BEELETH Wiki has everything about [[BEELETH]]'s character universe all in one place so you no longer have to cross the dimensional rift for every last bit of info about any lore.
[[File:Origin.png|right|frameless|153x153px]]
Want to help the Wiki? A good first-hand source for up-to-date information about BEELETH's work is [https://toyhou.se/BEELETH their Toyhouse page]. Feel free to create new pages for [[:Category:Characters|characters]], [[:Category:Location|locations]], universes, and whatever else as long as they haven't been added to the Wiki. Also be sure to help keep all pages accurate by editing anything that you notice is false or outdated!
==Check these plots out!==
<gallery position="center" captionalign="center" navigation="true">
File:Potpa.png|link=Pride_of_the_Peacock_Angel|[[Pride of the Peacock Angel]]
File:Apoo.png|link=Animalia_Pacifica|[[Animalia Pacifica]]
File:Tac.png|link=Tooth_and_Claw|[[Tooth and Claw]]
</gallery>
Be sure to check out the [[:Category:Plots|plot category]] for more.
<!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. -->
<mainpage-endcolumn />
<mainpage-rightcolumn-start />
{{DiscordIntegrator
|id = 840663860217380894
|theme = dark
|width = 300px
|height = 300px
}}
===Administrators===
*[[User:Beeleth|Beeleth]]
*[[User:Cosmiicat|Cam]]
*[[User:Bastnu|Chee]]
===To-do list ===
#Create all plot pages
#Upload all transparent OC images
===Note===
If you're just passing by this Wiki without prior knowledge or if you have bad intentions, ''please'' be respectful and don't edit, create, or upload things without good reason. My characters are my passion.<mainpage-endcolumn />
[[Category:{{SITENAME}}]]
__NOTOC__
e20598da7d00cf6100edbac27dd177291bb6c58c
3
2
2022-11-10T22:14:22Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<mainpage-leftcolumn-start />
<div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div>
[[File:Abstract.png|left|frameless]]
Weary traveler, your efforts to cross [[Vast Space]] have not been in vain... the BEELETH Wiki has everything about [[BEELETH]]'s character universe all in one place so you no longer have to cross the dimensional rift for every last bit of info about any lore.
[[File:Origin.png|right|frameless|153x153px]]
Want to help the Wiki? A good first-hand source for up-to-date information about BEELETH's work is [https://toyhou.se/BEELETH their Toyhouse page]. Feel free to create new pages for [[:Category:Characters|characters]], [[:Category:Location|locations]], universes, and whatever else as long as they haven't been added to the Wiki. Also be sure to help keep all pages accurate by editing anything that you notice is false or outdated!
==Check these plots out!==
<gallery position="center" captionalign="center" navigation="true">
File:Potpa.png|link=Pride_of_the_Peacock_Angel|[[Pride of the Peacock Angel]]
File:Apoo.png|link=Animalia_Pacifica|[[Animalia Pacifica]]
File:Tac.png|link=Tooth_and_Claw|[[Tooth and Claw]]
</gallery>
Be sure to check out the [[:Category:Plots|plot category]] for more.
<!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. -->
<mainpage-endcolumn />
<mainpage-rightcolumn-start />
{{DiscordIntegrator
|id = 840663860217380894
|theme = dark
|width = 300px
|height = 300px
}}
===Administrators===
*[[User:Beeleth|Beeleth]]
*[[User:Cosmiicat|Cam]]
*[[User:Bastnu|Chee]]
===To-do list ===
#Create all plot pages
#Upload all transparent OC images
===Note===
If you're just passing by this Wiki without prior knowledge or if you have bad intentions, ''please'' be respectful and don't edit, create, or upload things without good reason. My characters are my passion.<mainpage-endcolumn />
[[Category:{{SITENAME}}]]
__NOTOC__
e20598da7d00cf6100edbac27dd177291bb6c58c
Category:Stubs
14
103
204
2022-10-14T00:46:53Z
beeleth>Beeleth
0
wikitext
text/x-wiki
__EXPECTUNUSEDCATEGORY__
This category contains articles that are noticeably incomplete regardless of their length and are tagged with the {{T|Stub}} template. If any of these articles seem to approach completion or manage to become complete, please remove the template from the page so they are no longer listed here.
Please help our Wiki by writing in these articles if you know what you're talking about.
[[Category:Maintenance]]
119791ec2b436de13f77e8541c85704c8902eaaf
Module:Protection banner
828
202
401
2022-10-21T08:07:11Z
beeleth>WOSlinker
0
use require('strict') instead of require('Module:No globals')
Scribunto
text/plain
-- This module implements {{pp-meta}} and its daughter templates such as
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.
-- Initialise necessary modules.
require('strict')
local makeFileLink = require('Module:File link')._main
local effectiveProtectionLevel = require('Module:Effective protection level')._main
local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main
local yesno = require('Module:Yesno')
-- Lazily initialise modules and objects we don't always need.
local getArgs, makeMessageBox, lang
-- Set constants.
local CONFIG_MODULE = 'Module:Protection banner/config'
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function makeCategoryLink(cat, sort)
if cat then
return string.format(
'[[%s:%s|%s]]',
mw.site.namespaces[14].name,
cat,
sort
)
end
end
-- Validation function for the expiry and the protection date
local function validateDate(dateString, dateType)
if not lang then
lang = mw.language.getContentLanguage()
end
local success, result = pcall(lang.formatDate, lang, 'U', dateString)
if success then
result = tonumber(result)
if result then
return result
end
end
error(string.format(
'invalid %s: %s',
dateType,
tostring(dateString)
), 4)
end
local function makeFullUrl(page, query, display)
return string.format(
'[%s %s]',
tostring(mw.uri.fullUrl(page, query)),
display
)
end
-- Given a directed graph formatted as node -> table of direct successors,
-- get a table of all nodes reachable from a given node (though always
-- including the given node).
local function getReachableNodes(graph, start)
local toWalk, retval = {[start] = true}, {}
while true do
-- Can't use pairs() since we're adding and removing things as we're iterating
local k = next(toWalk) -- This always gets the "first" key
if k == nil then
return retval
end
toWalk[k] = nil
retval[k] = true
for _,v in ipairs(graph[k]) do
if not retval[v] then
toWalk[v] = true
end
end
end
end
--------------------------------------------------------------------------------
-- Protection class
--------------------------------------------------------------------------------
local Protection = {}
Protection.__index = Protection
Protection.supportedActions = {
edit = true,
move = true,
autoreview = true,
upload = true
}
Protection.bannerConfigFields = {
'text',
'explanation',
'tooltip',
'alt',
'link',
'image'
}
function Protection.new(args, cfg, title)
local obj = {}
obj._cfg = cfg
obj.title = title or mw.title.getCurrentTitle()
-- Set action
if not args.action then
obj.action = 'edit'
elseif Protection.supportedActions[args.action] then
obj.action = args.action
else
error(string.format(
'invalid action: %s',
tostring(args.action)
), 3)
end
-- Set level
obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)
if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then
-- Users need to be autoconfirmed to move pages anyway, so treat
-- semi-move-protected pages as unprotected.
obj.level = '*'
end
-- Set expiry
local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)
if effectiveExpiry == 'infinity' then
obj.expiry = 'indef'
elseif effectiveExpiry ~= 'unknown' then
obj.expiry = validateDate(effectiveExpiry, 'expiry date')
end
-- Set reason
if args[1] then
obj.reason = mw.ustring.lower(args[1])
if obj.reason:find('|') then
error('reasons cannot contain the pipe character ("|")', 3)
end
end
-- Set protection date
if args.date then
obj.protectionDate = validateDate(args.date, 'protection date')
end
-- Set banner config
do
obj.bannerConfig = {}
local configTables = {}
if cfg.banners[obj.action] then
configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]
end
if cfg.defaultBanners[obj.action] then
configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]
configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default
end
configTables[#configTables + 1] = cfg.masterBanner
for i, field in ipairs(Protection.bannerConfigFields) do
for j, t in ipairs(configTables) do
if t[field] then
obj.bannerConfig[field] = t[field]
break
end
end
end
end
return setmetatable(obj, Protection)
end
function Protection:isUserScript()
-- Whether the page is a user JavaScript or CSS page.
local title = self.title
return title.namespace == 2 and (
title.contentModel == 'javascript' or title.contentModel == 'css'
)
end
function Protection:isProtected()
return self.level ~= '*'
end
function Protection:shouldShowLock()
-- Whether we should output a banner/padlock
return self:isProtected() and not self:isUserScript()
end
-- Whether this page needs a protection category.
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock
function Protection:isTemporary()
return type(self.expiry) == 'number'
end
function Protection:makeProtectionCategory()
if not self:shouldHaveProtectionCategory() then
return ''
end
local cfg = self._cfg
local title = self.title
-- Get the expiry key fragment.
local expiryFragment
if self.expiry == 'indef' then
expiryFragment = self.expiry
elseif type(self.expiry) == 'number' then
expiryFragment = 'temp'
end
-- Get the namespace key fragment.
local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]
if not namespaceFragment and title.namespace % 2 == 1 then
namespaceFragment = 'talk'
end
-- Define the order that key fragments are tested in. This is done with an
-- array of tables containing the value to be tested, along with its
-- position in the cfg.protectionCategories table.
local order = {
{val = expiryFragment, keypos = 1},
{val = namespaceFragment, keypos = 2},
{val = self.reason, keypos = 3},
{val = self.level, keypos = 4},
{val = self.action, keypos = 5}
}
--[[
-- The old protection templates used an ad-hoc protection category system,
-- with some templates prioritising namespaces in their categories, and
-- others prioritising the protection reason. To emulate this in this module
-- we use the config table cfg.reasonsWithNamespacePriority to set the
-- reasons for which namespaces have priority over protection reason.
-- If we are dealing with one of those reasons, move the namespace table to
-- the end of the order table, i.e. give it highest priority. If not, the
-- reason should have highest priority, so move that to the end of the table
-- instead.
--]]
table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))
--[[
-- Define the attempt order. Inactive subtables (subtables with nil "value"
-- fields) are moved to the end, where they will later be given the key
-- "all". This is to cut down on the number of table lookups in
-- cfg.protectionCategories, which grows exponentially with the number of
-- non-nil keys. We keep track of the number of active subtables with the
-- noActive parameter.
--]]
local noActive, attemptOrder
do
local active, inactive = {}, {}
for i, t in ipairs(order) do
if t.val then
active[#active + 1] = t
else
inactive[#inactive + 1] = t
end
end
noActive = #active
attemptOrder = active
for i, t in ipairs(inactive) do
attemptOrder[#attemptOrder + 1] = t
end
end
--[[
-- Check increasingly generic key combinations until we find a match. If a
-- specific category exists for the combination of key fragments we are
-- given, that match will be found first. If not, we keep trying different
-- key fragment combinations until we match using the key
-- "all-all-all-all-all".
--
-- To generate the keys, we index the key subtables using a binary matrix
-- with indexes i and j. j is only calculated up to the number of active
-- subtables. For example, if there were three active subtables, the matrix
-- would look like this, with 0 corresponding to the key fragment "all", and
-- 1 corresponding to other key fragments.
--
-- j 1 2 3
-- i
-- 1 1 1 1
-- 2 0 1 1
-- 3 1 0 1
-- 4 0 0 1
-- 5 1 1 0
-- 6 0 1 0
-- 7 1 0 0
-- 8 0 0 0
--
-- Values of j higher than the number of active subtables are set
-- to the string "all".
--
-- A key for cfg.protectionCategories is constructed for each value of i.
-- The position of the value in the key is determined by the keypos field in
-- each subtable.
--]]
local cats = cfg.protectionCategories
for i = 1, 2^noActive do
local key = {}
for j, t in ipairs(attemptOrder) do
if j > noActive then
key[t.keypos] = 'all'
else
local quotient = i / 2 ^ (j - 1)
quotient = math.ceil(quotient)
if quotient % 2 == 1 then
key[t.keypos] = t.val
else
key[t.keypos] = 'all'
end
end
end
key = table.concat(key, '|')
local attempt = cats[key]
if attempt then
return makeCategoryLink(attempt, title.text)
end
end
return ''
end
function Protection:isIncorrect()
local expiry = self.expiry
return not self:shouldHaveProtectionCategory()
or type(expiry) == 'number' and expiry < os.time()
end
function Protection:isTemplateProtectedNonTemplate()
local action, namespace = self.action, self.title.namespace
return self.level == 'templateeditor'
and (
(action ~= 'edit' and action ~= 'move')
or (namespace ~= 10 and namespace ~= 828)
)
end
function Protection:makeCategoryLinks()
local msg = self._cfg.msg
local ret = {self:makeProtectionCategory()}
if self:isIncorrect() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-incorrect'],
self.title.text
)
end
if self:isTemplateProtectedNonTemplate() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-template'],
self.title.text
)
end
return table.concat(ret)
end
--------------------------------------------------------------------------------
-- Blurb class
--------------------------------------------------------------------------------
local Blurb = {}
Blurb.__index = Blurb
Blurb.bannerTextFields = {
text = true,
explanation = true,
tooltip = true,
alt = true,
link = true
}
function Blurb.new(protectionObj, args, cfg)
return setmetatable({
_cfg = cfg,
_protectionObj = protectionObj,
_args = args
}, Blurb)
end
-- Private methods --
function Blurb:_formatDate(num)
-- Formats a Unix timestamp into dd Month, YYYY format.
lang = lang or mw.language.getContentLanguage()
local success, date = pcall(
lang.formatDate,
lang,
self._cfg.msg['expiry-date-format'] or 'j F Y',
'@' .. tostring(num)
)
if success then
return date
end
end
function Blurb:_getExpandedMessage(msgKey)
return self:_substituteParameters(self._cfg.msg[msgKey])
end
function Blurb:_substituteParameters(msg)
if not self._params then
local parameterFuncs = {}
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter
parameterFuncs.EXPIRY = self._makeExpiryParameter
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter
parameterFuncs.IMAGELINK = self._makeImageLinkParameter
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter
parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter
parameterFuncs.PAGETYPE = self._makePagetypeParameter
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter
parameterFuncs.TALKPAGE = self._makeTalkPageParameter
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter
parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter
parameterFuncs.VANDAL = self._makeVandalTemplateParameter
self._params = setmetatable({}, {
__index = function (t, k)
local param
if parameterFuncs[k] then
param = parameterFuncs[k](self)
end
param = param or ''
t[k] = param
return param
end
})
end
msg = msg:gsub('${(%u+)}', self._params)
return msg
end
function Blurb:_makeCurrentVersionParameter()
-- A link to the page history or the move log, depending on the kind of
-- protection.
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'move' then
-- We need the move log link.
return makeFullUrl(
'Special:Log',
{type = 'move', page = pagename},
self:_getExpandedMessage('current-version-move-display')
)
else
-- We need the history link.
return makeFullUrl(
pagename,
{action = 'history'},
self:_getExpandedMessage('current-version-edit-display')
)
end
end
function Blurb:_makeEditRequestParameter()
local mEditRequest = require('Module:Submit an edit request')
local action = self._protectionObj.action
local level = self._protectionObj.level
-- Get the edit request type.
local requestType
if action == 'edit' then
if level == 'autoconfirmed' then
requestType = 'semi'
elseif level == 'extendedconfirmed' then
requestType = 'extended'
elseif level == 'templateeditor' then
requestType = 'template'
end
end
requestType = requestType or 'full'
-- Get the display value.
local display = self:_getExpandedMessage('edit-request-display')
return mEditRequest._link{type = requestType, display = display}
end
function Blurb:_makeExpiryParameter()
local expiry = self._protectionObj.expiry
if type(expiry) == 'number' then
return self:_formatDate(expiry)
else
return expiry
end
end
function Blurb:_makeExplanationBlurbParameter()
-- Cover special cases first.
if self._protectionObj.title.namespace == 8 then
-- MediaWiki namespace
return self:_getExpandedMessage('explanation-blurb-nounprotect')
end
-- Get explanation blurb table keys
local action = self._protectionObj.action
local level = self._protectionObj.level
local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject'
-- Find the message in the explanation blurb table and substitute any
-- parameters.
local explanations = self._cfg.explanationBlurbs
local msg
if explanations[action][level] and explanations[action][level][talkKey] then
msg = explanations[action][level][talkKey]
elseif explanations[action][level] and explanations[action][level].default then
msg = explanations[action][level].default
elseif explanations[action].default and explanations[action].default[talkKey] then
msg = explanations[action].default[talkKey]
elseif explanations[action].default and explanations[action].default.default then
msg = explanations[action].default.default
else
error(string.format(
'could not find explanation blurb for action "%s", level "%s" and talk key "%s"',
action,
level,
talkKey
), 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeImageLinkParameter()
local imageLinks = self._cfg.imageLinks
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if imageLinks[action][level] then
msg = imageLinks[action][level]
elseif imageLinks[action].default then
msg = imageLinks[action].default
else
msg = imageLinks.edit.default
end
return self:_substituteParameters(msg)
end
function Blurb:_makeIntroBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-blurb-expiry')
else
return self:_getExpandedMessage('intro-blurb-noexpiry')
end
end
function Blurb:_makeIntroFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-fragment-expiry')
else
return self:_getExpandedMessage('intro-fragment-noexpiry')
end
end
function Blurb:_makePagetypeParameter()
local pagetypes = self._cfg.pagetypes
return pagetypes[self._protectionObj.title.namespace]
or pagetypes.default
or error('no default pagetype defined', 8)
end
function Blurb:_makeProtectionBlurbParameter()
local protectionBlurbs = self._cfg.protectionBlurbs
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionBlurbs[action][level] then
msg = protectionBlurbs[action][level]
elseif protectionBlurbs[action].default then
msg = protectionBlurbs[action].default
elseif protectionBlurbs.edit.default then
msg = protectionBlurbs.edit.default
else
error('no protection blurb defined for protectionBlurbs.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionDateParameter()
local protectionDate = self._protectionObj.protectionDate
if type(protectionDate) == 'number' then
return self:_formatDate(protectionDate)
else
return protectionDate
end
end
function Blurb:_makeProtectionLevelParameter()
local protectionLevels = self._cfg.protectionLevels
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionLevels[action][level] then
msg = protectionLevels[action][level]
elseif protectionLevels[action].default then
msg = protectionLevels[action].default
elseif protectionLevels.edit.default then
msg = protectionLevels.edit.default
else
error('no protection level defined for protectionLevels.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionLogParameter()
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'autoreview' then
-- We need the pending changes log.
return makeFullUrl(
'Special:Log',
{type = 'stable', page = pagename},
self:_getExpandedMessage('pc-log-display')
)
else
-- We need the protection log.
return makeFullUrl(
'Special:Log',
{type = 'protect', page = pagename},
self:_getExpandedMessage('protection-log-display')
)
end
end
function Blurb:_makeTalkPageParameter()
return string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[self._protectionObj.title.namespace].talk.name,
self._protectionObj.title.text,
self._args.section or 'top',
self:_getExpandedMessage('talk-page-link-display')
)
end
function Blurb:_makeTooltipBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-blurb-expiry')
else
return self:_getExpandedMessage('tooltip-blurb-noexpiry')
end
end
function Blurb:_makeTooltipFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-fragment-expiry')
else
return self:_getExpandedMessage('tooltip-fragment-noexpiry')
end
end
function Blurb:_makeVandalTemplateParameter()
return mw.getCurrentFrame():expandTemplate{
title="vandal-m",
args={self._args.user or self._protectionObj.title.baseText}
}
end
-- Public methods --
function Blurb:makeBannerText(key)
-- Validate input.
if not key or not Blurb.bannerTextFields[key] then
error(string.format(
'"%s" is not a valid banner config field',
tostring(key)
), 2)
end
-- Generate the text.
local msg = self._protectionObj.bannerConfig[key]
if type(msg) == 'string' then
return self:_substituteParameters(msg)
elseif type(msg) == 'function' then
msg = msg(self._protectionObj, self._args)
if type(msg) ~= 'string' then
error(string.format(
'bad output from banner config function with key "%s"'
.. ' (expected string, got %s)',
tostring(key),
type(msg)
), 4)
end
return self:_substituteParameters(msg)
end
end
--------------------------------------------------------------------------------
-- BannerTemplate class
--------------------------------------------------------------------------------
local BannerTemplate = {}
BannerTemplate.__index = BannerTemplate
function BannerTemplate.new(protectionObj, cfg)
local obj = {}
obj._cfg = cfg
-- Set the image filename.
local imageFilename = protectionObj.bannerConfig.image
if imageFilename then
obj._imageFilename = imageFilename
else
-- If an image filename isn't specified explicitly in the banner config,
-- generate it from the protection status and the namespace.
local action = protectionObj.action
local level = protectionObj.level
local namespace = protectionObj.title.namespace
local reason = protectionObj.reason
-- Deal with special cases first.
if (
namespace == 10
or namespace == 828
or reason and obj._cfg.indefImageReasons[reason]
)
and action == 'edit'
and level == 'sysop'
and not protectionObj:isTemporary()
then
-- Fully protected modules and templates get the special red "indef"
-- padlock.
obj._imageFilename = obj._cfg.msg['image-filename-indef']
else
-- Deal with regular protection types.
local images = obj._cfg.images
if images[action] then
if images[action][level] then
obj._imageFilename = images[action][level]
elseif images[action].default then
obj._imageFilename = images[action].default
end
end
end
end
return setmetatable(obj, BannerTemplate)
end
function BannerTemplate:renderImage()
local filename = self._imageFilename
or self._cfg.msg['image-filename-default']
or 'Transparent.gif'
return makeFileLink{
file = filename,
size = (self.imageWidth or 20) .. 'px',
alt = self._imageAlt,
link = self._imageLink,
caption = self.imageCaption
}
end
--------------------------------------------------------------------------------
-- Banner class
--------------------------------------------------------------------------------
local Banner = setmetatable({}, BannerTemplate)
Banner.__index = Banner
function Banner.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 40
obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip.
obj._reasonText = blurbObj:makeBannerText('text')
obj._explanationText = blurbObj:makeBannerText('explanation')
obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.
return setmetatable(obj, Banner)
end
function Banner:__tostring()
-- Renders the banner.
makeMessageBox = makeMessageBox or require('Module:Message box').main
local reasonText = self._reasonText or error('no reason text set', 2)
local explanationText = self._explanationText
local mbargs = {
page = self._page,
type = 'protection',
image = self:renderImage(),
text = string.format(
"'''%s'''%s",
reasonText,
explanationText and '<br />' .. explanationText or ''
)
}
return makeMessageBox('mbox', mbargs)
end
--------------------------------------------------------------------------------
-- Padlock class
--------------------------------------------------------------------------------
local Padlock = setmetatable({}, BannerTemplate)
Padlock.__index = Padlock
function Padlock.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 20
obj.imageCaption = blurbObj:makeBannerText('tooltip')
obj._imageAlt = blurbObj:makeBannerText('alt')
obj._imageLink = blurbObj:makeBannerText('link')
obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]
or cfg.padlockIndicatorNames.default
or 'pp-default'
return setmetatable(obj, Padlock)
end
function Padlock:__tostring()
local frame = mw.getCurrentFrame()
-- The nowiki tag helps prevent whitespace at the top of articles.
return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{
name = 'indicator',
args = {name = self._indicatorName},
content = self:renderImage()
}
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- This is used for testing purposes.
return {
Protection = Protection,
Blurb = Blurb,
BannerTemplate = BannerTemplate,
Banner = Banner,
Padlock = Padlock,
}
end
function p._main(args, cfg, title)
args = args or {}
cfg = cfg or require(CONFIG_MODULE)
local protectionObj = Protection.new(args, cfg, title)
local ret = {}
-- If a page's edit protection is equally or more restrictive than its
-- protection from some other action, then don't bother displaying anything
-- for the other action (except categories).
if not yesno(args.catonly) and (protectionObj.action == 'edit' or
args.demolevel or
not getReachableNodes(
cfg.hierarchy,
protectionObj.level
)[effectiveProtectionLevel('edit', protectionObj.title)])
then
-- Initialise the blurb object
local blurbObj = Blurb.new(protectionObj, args, cfg)
-- Render the banner
if protectionObj:shouldShowLock() then
ret[#ret + 1] = tostring(
(yesno(args.small) and Padlock or Banner)
.new(protectionObj, blurbObj, cfg)
)
end
end
-- Render the categories
if yesno(args.category) ~= false then
ret[#ret + 1] = protectionObj:makeCategoryLinks()
end
return table.concat(ret)
end
function p.main(frame, cfg)
cfg = cfg or require(CONFIG_MODULE)
-- Find default args, if any.
local parent = frame.getParent and frame:getParent()
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]
-- Find user args, and use the parent frame if we are being called from a
-- wrapper template.
getArgs = getArgs or require('Module:Arguments').getArgs
local userArgs = getArgs(frame, {
parentOnly = defaultArgs,
frameOnly = not defaultArgs
})
-- Build the args table. User-specified args overwrite default args.
local args = {}
for k, v in pairs(defaultArgs or {}) do
args[k] = v
end
for k, v in pairs(userArgs) do
args[k] = v
end
return p._main(args, cfg)
end
return p
894f0884d4c2da1ce19d385b96f59af654b0946a
Template:Infobox/doc
10
230
459
2022-10-22T16:10:50Z
beeleth>Paine Ellsworth
0
High-use template and update /doc
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{distinguish|Template:Userbox}}
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Lua|Module:Infobox}}
{{Parameter names example
|name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>......
|image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>......
|header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div>
|label2={{{label1}}} |data2={{{data1}}}
|data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div>
|header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div>
|label6={{{label2}}} |data6={{{data2}}}
|data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div>
|data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div>
|below
}}
This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes.
== Usage ==
{{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}).
For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified:
<pre>
{{Infobox
| name = {{{name|{{PAGENAME}}}}}
| image = {{{image|}}}
| caption1 = {{{caption|}}}
| label1 = Former names
| data1 = {{{former_names|}}}
| header2 = General information
| label3 = Status
| data3 = {{{status|}}}
... <!-- etc. -->
}}
</pre>
== Optional control parameters ==
; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change.
; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it.
; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes".
; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it.
; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details.
== Content parameters ==
=== Title ===
There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended):
; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative.
; above : Text to put within the uppermost cell of the table.
; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images.
Examples:
{{Infobox
| name = Infobox/doc
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<pre style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</pre>{{clear}}
{{Infobox
| name = Infobox/doc
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<pre style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</pre>{{clear}}
=== Illustration images ===
; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text.
; caption(n) : Text to put underneath the images.
=== Main data ===
; header(n) : Text to use as a header in row n.
; label(n) : Text to use as a label in row n.
; data(n) : Text to display as data in row n.
Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are:
* {{para|class''(n)''}} {{para|header''(n)''}}
* {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
* {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below.
==== Number ranges ====
To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example:
<pre style="overflow:auto">
| header3 = Section 1
| label5 = Label A
| data5 = Data A
| label7 = Label C
| data7 = Data C
| header10 = Section 2
| label12 = Label D
| data12 = Data D
</pre>{{clear}}
It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]].
There is no upper limit on numbers but there must be at most 50 between each used number.
==== Making data fields optional ====
A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so:
<pre style="overflow:auto">
| label5 = Population
| data5 = {{{population|}}}
</pre>{{clear}}
This way if an article doesn't define the population parameter in its infobox the row won't be displayed.
For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'":
<pre style="overflow:auto">
| label6 = Mass
| data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }}
</pre>{{clear}}
For more on #if, see [[meta:ParserFunctions##if:|here]].
==== Hiding headers when all its data fields are empty ====
You can also make headers automatically hide when their section is empty (has no data-row showing).
Consider this situation:
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<pre style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</pre>{{clear}}
If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''':
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<syntaxhighlight lang="moin" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</syntaxhighlight>{{clear}}
So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content.
Note: if the data has empty css elements, like {{para|data|2=<span style="background:yellow;"></span>}}, this will be treated as non-empty (having data).
If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items.
{{Infobox
| title = Example: blank header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
<syntaxhighlight lang="moin" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
</syntaxhighlight>{{clear}}
=== Footer ===
; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information.
== Presentation parameters ==
=== Italic titles ===
Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter.
* Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox.
* Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}}
* Do not make any titles italic by not passing the parameter at all.
=== CSS styling ===
{{div col}}
; bodystyle : Applies to the infobox table as a whole
; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox.
; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle.
; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future.
; captionstyle : Applies to the text of the image caption.
; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row.
; headerstyle : Applies to all header cells
; subheaderstyle : Applies to all subheader cells
; labelstyle : Applies to all label cells
; datastyle : Applies to all data cells
; belowstyle : Applies only to the below cell
{{div col end}}
=== HTML classes and microformats ===
{{div col}}
; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole.
; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption.
<!-- currently not implemented in Lua module
; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on.
-->
; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell.
; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on.
; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''.
; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on.
; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''.
; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells.
; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect.
<!-- currently not implemented in Lua module
; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on.
-->
; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell.
{{div col end}}
This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats.
To flag an infobox as containing [[hCard]] information, for example, add the following parameter:
<pre style="overflow:auto">
| bodyclass = vcard
</pre>{{clear}}
And for each row containing a data cell that's part of the vcard, add a corresponding class parameter:
<pre style="overflow:auto">
| class1 = fn
| class2 = org
| class3 = tel
</pre>{{clear}}
...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox.
See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general.
== Examples ==
Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell :
{{Infobox
|name = Infobox/doc
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
|image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below File:Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
<syntaxhighlight lang="Sass" style="overflow:auto" highlight="15">
{{Infobox
|name = {{subst:PAGENAME}}
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
| image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
</syntaxhighlight>{{clear}}
For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels:
{{Infobox
|name = Infobox/doc
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
<syntaxhighlight lang="sass" highlight="3,9" style="overflow: auto">
{{Infobox
|name = {{subst:PAGENAME}}
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
</syntaxhighlight>{{clear}}
== Embedding ==
<!--Linked from [[Template:Subinfobox bodystyle/doc]]-->
One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>.
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<pre style="overflow:auto">
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</pre>{{clear}}
Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<pre style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</pre>{{clear}}
or,
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<pre style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</pre>{{clear}}
Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number.
[[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes.
== Subboxes ==
An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table.
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
<syntaxhighlight lang="sass" style="overflow:auto">
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
</syntaxhighlight>{{clear}}
Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) :
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
<syntaxhighlight lang="sass" style="overflow:auto">
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
</syntaxhighlight>{{clear}}
Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes.
== Controlling line-breaking in embedded bulletless lists ==
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details.
== Full blank syntax ==
(Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.)
<pre style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| templatestyles =
| child templatestyles =
| grandchild templatestyles =
| bodystyle =
| titlestyle =
| abovestyle =
| subheaderstyle =
| title =
| above =
| subheader =
| imagestyle =
| captionstyle =
| image =
| caption =
| image2 =
| caption2 =
| headerstyle =
| labelstyle =
| datastyle =
| header1 =
| label1 =
| data1 =
| header2 =
| label2 =
| data2 =
| header3 =
| label3 =
| data3 =
| header4 =
| label4 =
| data4 =
| header5 =
| label5 =
| data5 =
| header6 =
| label6 =
| data6 =
| header7 =
| label7 =
| data7 =
| header8 =
| label8 =
| data8 =
| header9 =
| label9 =
| data9 =
| header10 =
| label10 =
| data10 =
| header11 =
| label11 =
| data11 =
| header12 =
| label12 =
| data12 =
| header13 =
| label13 =
| data13 =
| header14 =
| label14 =
| data14 =
| header15 =
| label15 =
| data15 =
| header16 =
| label16 =
| data16 =
| header17 =
| label17 =
| data17 =
| header18 =
| label18 =
| data18 =
| header19 =
| label19 =
| data19 =
| header20 =
| label20 =
| data20 =
| belowstyle =
| below =
}}
</pre>{{clear}}
{{Help:Infobox/user style}}
== Porting to other MediaWikis ==
The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] extension. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.",
"format": "{{_\n| ________________ = _\n}}\n",
"params": {
"title": {
"label": "Title",
"description": "Title displayed above the infobox",
"type": "string",
"suggested": true
},
"image": {
"label": "Image",
"description": "Image illustrating the topic. Use full image syntax.",
"type": "content",
"suggested": true,
"example": "[[File:example.png|200px|alt=Example alt text]]"
},
"caption": {
"label": "Caption",
"description": "caption for the image",
"type": "content",
"suggested": true
}
},
"paramOrder": [
"title",
"image",
"caption"
]
}
</templatedata>
==Tracking categories==
* {{Category link with count|Articles with missing Wikidata information}}
* {{Category link with count|Articles using infobox templates with no data rows}}
* {{Category link with count|Pages using embedded infobox templates with the title parameter}}
==See also==
* [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based
* [[Module:Check for unknown parameters]]
* {{tl|Infobox3cols}}
* {{tl|Navbox}} and {{tl|Sidebar}}
* [[Wikipedia:List of infoboxes|List of infoboxes]]
* [[:Module:InfoboxImage]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates| ]]
[[Category:Wikipedia metatemplates|Infobox]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates based on the Infobox Lua module]]
}}</includeonly>
4d4021dda2765ddd1cf8ba09b9fff12760e924a9
Module:Message box
828
175
343
2022-10-23T04:26:44Z
beeleth>Legoktm
0
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705
Main Page
0
1
1
2022-11-10T22:02:15Z
MediaWiki default
1
Create main page
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phab:|Phabricator]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
21236ac3f8d65e5563b6da6b70815ca6bf1e6616
Template:Album
10
3
5
4
2022-11-10T22:14:23Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Album">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="artist"><label>Artist</label></data>
<data source="released"><label>Released</label></data>
<data source="recorded"><label>Recorded</label></data>
<data source="length"><label>Length</label></data>
<data source="label"><label>Label</label></data>
<data source="producer"><label>Producer</label></data>
</infobox></includeonly><noinclude>{{Documentation}}</noinclude>
7145bd5ecd9bcafcf1907686b6a57145c9c894ac
Template:Album/doc
10
4
7
6
2022-11-10T22:14:24Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Album
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| artist =
| released =
| recorded =
| length =
| label =
| producer =
}}
</pre>
== Sample output ==
{{Album
| title = Fleur
| image = Example.jpg
| artist = Marigold
| released = June 2012
| recorded = 2011
| length = 88:88
| label = Spring
| producer = Daffy
}}
<pre>
{{Album
| title = Fleur
| image = Example.jpg
| artist = Marigold
| released = June 2012
| recorded = 2011
| length = 88:88
| label = Spring
| producer = Daffy
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
34c5cd77d0a20c3509b82f0386c7429a8b47a5fb
Template:T
10
6
11
10
2022-11-10T22:14:26Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<onlyinclude><nowiki>{{</nowiki>{{#if:{{{prefix|}}}|{{{prefix}}}:}}[[Template:{{{1}}}|{{{1}}}]]<!--
-->{{#if:{{{2|}}}||<span style="color:#555;">''<{{{2}}}>''</span>}}<!--
-->{{#if:{{{3|}}}||<span style="color:#555;">''<{{{3}}}>''</span>}}<!--
-->{{#if:{{{4|}}}||<span style="color:#555;">''<{{{4}}}>''</span>}}<!--
-->{{#if:{{{5|}}}||<span style="color:#555;">''<{{{5}}}>''</span>}}<!--
-->{{#if:{{{6|}}}||<span style="color:#555;">''<{{{6}}}>''</span>}}<!--
-->{{#if:{{{7|}}}||<span style="color:#555;">''<{{{7}}}>''</span>}}<!--
-->{{#if:{{{8|}}}||<span style="color:#555;">''<{{{8}}}>''</span>}}<!--
-->{{#if:{{{9|}}}||<span style="color:#555;">''<{{{9}}}>''</span>}}<!--
-->{{#if:{{{10|}}}||<span style="color:#555;">''<{{{10}}}>''</span>}}<!--
-->{{#if:{{{11|}}}||<span style="color:#555;">''<{{{11}}}>''</span>}}<!--
-->{{#if:{{{12|}}}||<span style="color:#555;">''<{{{12}}}>''</span>}}<!--
-->{{#if:{{{13|}}}||<span style="color:#555;">''<{{{13}}}>''</span>}}<!--
-->{{#if:{{{14|}}}||<span style="color:#555;">''<{{{14}}}>''</span>}}<!--
-->{{#if:{{{15|}}}||<span style="color:#555;">''<{{{15}}}>''</span>}}<!--
-->{{#if:{{{16|}}}||<span style="color:#555;">''<{{{16}}}>''</span>}}<!--
-->{{#if:{{{17|}}}||<span style="color:#555;">''<{{{17}}}>''</span>}}<!--
-->{{#if:{{{18|}}}||<span style="color:#555;">''<{{{18}}}>''</span>}}<!--
-->{{#if:{{{19|}}}||<span style="color:#555;">''<{{{19}}}>''</span>}}<!--
-->{{#if:{{{20|}}}||<span style="color:#555;">''<{{{20}}}>''</span>}}<!--
-->{{#if:{{{21|}}}||<span style="color:#555;">''<{{{21}}}>''</span>}}<!--
--><nowiki>}}</nowiki></onlyinclude><noinclude>{{documentation}}</noinclude>
4273916fece7a96eef48125efb615009a1fd6fe6
Template:Documentation/doc
10
7
13
12
2022-11-10T22:14:26Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
==Description==
This template is used to insert descriptions on template pages.
==Syntax==
Add <code><nowiki><noinclude></nowiki>{{t|Documentation}}<nowiki></noinclude></nowiki></code> at the end of the template page.
Add <code><nowiki><noinclude></nowiki>{{t|Documentation|documentation page}}<nowiki></noinclude></nowiki></code> to transclude an alternative page from the /doc subpage.
==Usage==
===On the Template page===
This is the normal format when used:
<pre>
TEMPLATE CODE
<includeonly>Any categories to be inserted into articles by the template</includeonly>
<noinclude>{{Documentation}}</noinclude>
</pre>
''If your template is not a completed div or table, you may need to close the tags just before <code><nowiki>{{Documentation}}</nowiki></code> is inserted (within the noinclude tags).''
''A line break right before <code><nowiki>{{Documentation}}</nowiki></code> can also be useful as it helps prevent the documentation template "running into" previous code.''
===On the documentation page===
The documentation page is usually located on the /doc subpage for a template, but a different page can be specified with the first parameter of the template (see [[#Syntax|Syntax]]).
Normally, you will want to write something like the following on the documentation page:
<pre>
==Description==
This template is used to do something.
==Syntax==
Type <code>{{t|templatename}}</code> somewhere.
==Samples==
<code><nowiki>{{templatename|input}}</nowiki></code>
results in...
{{templatename|input}}
<includeonly>Any categories for the template itself</includeonly>
<noinclude>[[Category:Template documentation]]</noinclude>
</pre>
Use any or all of the above description/syntax/sample output sections. You may also want to add "see also" or other sections.
Note that the above example also uses the [[Template:T]] template.
<includeonly>[[Category:Documentation templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
58ca364cb71b551e4a71ddf3046cf41c84db0d57
Template:T/doc
10
8
15
14
2022-11-10T22:14:27Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
A template link with a variable number of parameters (0-20).
;Syntax
:{{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}} <!-- self-referential examples! -->
;Source
:Improved version not needing t/piece subtemplate developed on [http://templates.fandom.com Templates wiki] see the [http://templates.fandom.com/index.php?title=Template:T&action=history list of authors]. Copied here via CC-By-SA 3.0 license.
;Example
:{{t|t|param1|param2}}
<includeonly>[[Category:General wiki templates]]</includeonly>
<noinclude>[[Category:Template documentation]]</noinclude>
6f7307b6bcfef75efcc1d71fc932366c04cd61b3
Template:Character
10
9
17
16
2022-11-10T22:14:28Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Character">
<title source="name"/>
<image source="image">
<caption source="imagecaption" />
</image>
<group>
<data source="aliases"><label>Aliases</label></data>
<data source="relatives"><label>Relatives</label></data>
<data source="affiliation"><label>Affiliation</label></data>
<data source="occupation"><label>Occupation</label></data>
</group>
<group>
<header>Biographical information</header>
<data source="marital"><label>Marital status</label></data>
<data source="birthDate"><label>Date of birth</label></data>
<data source="birthPlace"><label>Place of birth</label></data>
<data source="deathDate"><label>Date of death</label></data>
<data source="deathPlace"><label>Place of death</label></data>
</group>
<group>
<header>Physical description</header>
<data source="species"><label>Species</label></data>
<data source="gender"><label>Gender</label></data>
<data source="height"><label>Height</label></data>
<data source="weight"><label>Weight</label></data>
<data source="eyes"><label>Eye color</label></data>
</group>
<group>
<header>Appearances</header>
<data source="portrayedby"><label>Portrayed by</label></data>
<data source="appearsin"><label>Appears in</label></data>
<data source="debut"><label>Debut</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
f63ba56dbc9f4a25683ff5d7104509d0e8bb9eda
Template:Character/doc
10
10
19
18
2022-11-10T22:14:28Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Character
| name =
| image =
| imagecaption =
| aliases =
| relatives =
| affiliation =
| occupation =
| marital =
| birthDate =
| birthPlace =
| deathDate =
| deathPlace =
| species =
| gender =
| height =
| weight =
| eyes =
| portrayedby =
| appearsin =
| debut =
}}
</pre>
== Sample output ==
{{Character
| name = Flowa
| image = Example.jpg
| imagecaption = Flowa, at rest
| aliases = Flo
| relatives =
| affiliation =
| occupation =
| marital =
| birthDate = July 21st, 2013
| birthPlace = Iowa
| deathDate =
| deathPlace =
| species = Plant
| gender =
| height =
| weight =
| eyes =
| portrayedby =
| appearsin =
| debut =
}}
<pre>
{{Character
| name = Flowa
| image = Example.jpg
| imagecaption = Flowa, at rest
| aliases = Flo
| relatives =
| affiliation =
| occupation =
| marital =
| birthDate = July 21st, 2013
| birthPlace = Iowa
| deathDate =
| deathPlace =
| species = Plant
| gender =
| height =
| weight =
| eyes =
| portrayedby =
| appearsin =
| debut =
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
6ddf3451fd7140d6b498a17d53162a4ccd65e691
Template:Book
10
11
21
20
2022-11-10T22:14:29Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Book">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="author"><label>Author</label></data>
<data source="illustrator"><label>Illustrator</label></data>
<data source="datePublished"><label>Published on</label></data>
<data source="publisher"><label>Publisher</label></data>
<group layout="horizontal">
<header>Publication order</header>
<data source="previous"><label>Previous</label></data>
<data source="next"><label>Next</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Books]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
c4bc425c60ee6f1a263f67a75f6d26aafc236c03
Template:Book/doc
10
12
23
22
2022-11-10T22:14:30Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>{{Book
| title =
| image = [e.g. "Example.jpg"]
| author =
| illustrator =
| datePublished =
| publisher =
| previous =
| next =
}}</pre>
== Sample output ==
{{Book
| title = The Adventures of Flower
| image = Example.jpg
| author = Alice
| illustrator = Bob
| datePublished = April 1928
| publisher = Arthur's
| previous = Book One
| next = Book Three
}}
<pre>{{Book
| title = The Adventures of Flower
| image = Example.jpg
| author = Alice
| illustrator = Bob
| datePublished = April 1928
| publisher = Arthur's
| previous = Book One
| next = Book Three
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
7320d1953158c6673ed6ce2be7bc35e2356522e5
Template:Episode
10
13
25
24
2022-11-10T22:14:31Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Episode">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="partOfSeason"><label>Season</label></data>
<data source="episodeNumber"><label>Episode</label></data>
<data source="airDate"><label>Air date</label></data>
<data source="writer"><label>Writer</label></data>
<data source="director"><label>Director</label></data>
<group layout="horizontal">
<header>Episode guide</header>
<data source="previousEpisode"><label>Previous</label></data>
<data source="nextEpisode"><label>Next</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Episodes]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
222b04973118bf9a11e3e5f3a034c07b6ec30fee
Template:Episode/doc
10
14
27
26
2022-11-10T22:14:31Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>{{Episode
| title =
| partOfSeason =
| episodeNumber =
| image = [e.g. "Example.jpg"]
| airDate =
| writer =
| director =
| previousEpisode =
| nextEpisode =
}}</pre>
== Sample output ==
{{Episode
| title = Flower of Babel
| partOfSeason = One
| episodeNumber = Three
| image = Example.jpg
| airDate = Unaired
| writer = D. Righta
| director = A. di Rektour
| previousEpisode = Episode Two
| nextEpisode = Episode Four
}}<pre>{{Episode
| title = Flower of Babel
| partOfSeason = One
| episodeNumber = Three
| image = Example.jpg
| airDate = Unaired
| writer = D. Righta
| director = A. di Rektour
| previousEpisode = Episode Two
| nextEpisode = Episode Four
}}</pre>
<includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
422683315393b9908127727460675544f6ffb8cf
Template:Event
10
15
29
28
2022-11-10T22:14:32Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Event">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="performers"><label>Performers</label></data>
<data source="date"><label>Date</label></data>
<data source="location"><label>Location</label></data>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Events]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
d66b112135e43b8474d30a6dab0feaab6588dfe8
Template:Event/doc
10
16
31
30
2022-11-10T22:14:33Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Event
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| performers =
| date =
| location =
}}
</pre>
== Sample output ==
{{Event
| title = Flower du Jour
| image = Example.jpg
| performers = Awesome Ones
| date = All the time
| location = Everywhere
}}
<pre>
{{Event
| title = Flower du Jour
| image = Example.jpg
| performers = Awesome Ones
| date = All the time
| location = Everywhere
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
1502585ceb0f0a7e1e70edc0fa8c88720e7da905
Template:Item
10
17
33
32
2022-11-10T22:14:33Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Item">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="type"><label>Type</label></data>
<data source="effects"><label>Effects</label></data>
<data source="source"><label>Source</label></data>
<data source="buy"><label>Cost to buy</label></data>
<data source="sell"><label>Cost to sell</label></data>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Items]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
1c76f47b4d1d6c296c09c245c7dd7d4efc9ff9e6
Template:Item/doc
10
18
35
34
2022-11-10T22:14:34Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Item
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| type =
| effects =
| source =
| buy =
| sell =
}}
</pre>
== Sample output ==
{{Item
| title = Power Flower
| image = Example.jpg
| type = Food
| effects = +1 Fire
| source = Vendor
| buy = 5g
| sell = 1g
}}<pre>
{{Item
| title = Power Flower
| image = Example.jpg
| type = Food
| effects = +1 Fire
| source = Vendor
| buy = 5g
| sell = 1g
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
ecd61f0a9df462e9790349a7ef0034b375ef0e2b
Template:Location
10
19
37
36
2022-11-10T22:14:35Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Location">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<image source="map"><caption source="mapcaption"/></image>
<data source="type"><label>Type</label></data>
<data source="level"><label>Level</label></data>
<data source="location"><label>Location</label></data>
<data source="inhabitants"><label>Inhabitants</label></data>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Locations]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
74c089bf3093e560bd6a2144977d9d0bc5faebc0
Template:Location/doc
10
20
39
38
2022-11-10T22:14:35Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Location
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| map = [e.g. "Example.jpg"]
| mapcaption =
| type =
| level =
| location =
| inhabitants =
}}
</pre>
== Sample output ==
{{Location
| title = Flora Island
| image = Example.jpg
| imagecaption = The island
| map = Example.jpg
| mapcaption = Zone map
| type = Contested
| level = 1-5
| location = Earth
| inhabitants = Stompy Humans, Drinky Bees
}}<pre>
{{Location
| title = Flora Island
| image = Example.jpg
| imagecaption = The island
| map = Example.jpg
| mapcaption = Zone map
| type = Contested
| level = 1-5
| location = Earth
| inhabitants = Stompy Humans, Drinky Bees
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
e3e627290fa1c04d98083b44bcd2fa5cb562e13c
Template:Navbox
10
21
41
40
2022-11-10T22:14:36Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{| style="width:100%; margin-top:1em; border:1px solid #999; font-size:90%; text-align:center;"
|-
! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}}
|-
| style="padding:0.2em 0.5em;" | {{{body}}}
|}<noinclude>
{{documentation}}</noinclude>
21aa3440d9c06c537ca5808c298e155d57e8dc90
Template:Navbox/doc
10
22
43
42
2022-11-10T22:14:37Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to create a basic navigation box. You can do so by calling the template, via the steps under "Syntax", but it is recommended to '''copy the code verbatim''' via the steps under "Navbox Creation".
;Navbox Creation
<inputbox>
type=create
prefix=Template:
preload=Template:Navbox
editintro=Template:Navbox/doc
buttonlabel=Make your navbox!
default = Navbox Foo
</inputbox>
#Think of a name for your navbox, like "Navbox Foo". Type it in the above field, press the button, and save the page immediately. Be ready to return to ''this'' page to see the rest of the instructions.
#Edit the resulting page in source mode.
#Replace <code>{{{header}}}</code> with the text you would like to appear in the header.
#Replace <code>{{{body}}}</code> with the text you would like to appear in the body.
#To add another section, copy these four lines of code immediately below the lines in the existing code that they resemble:
<pre>|-
! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}}
|-
| style="padding:0.2em 0.5em;" | {{{body}}}</pre>
Save the page once you have added as many sections as you needed, and filled them with content. You may also want to create a /doc subpage explaining that to call the resulting template, one must only type <code>{<nowiki/>{Navbox Foo}}</code>, or rather, whatever we decided to name the template in step 1.
;Syntax
<pre>{{navbox
|header=Land of Bob
|body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>.
}}</pre>
:Results in...
{{navbox
|header=Land of Bob
|body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>.
}}
<includeonly>[[Category:Navbox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
4b1a1bf5f00c2d159d30d8f8bc525309ac16d406
Template:Quest
10
23
45
44
2022-11-10T22:14:37Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Quest">
<title source="title"/>
<image source="image"><caption source="imagecaption"/></image>
<data source="start"><label>Start</label></data>
<data source="end"><label>End</label></data>
<data source="prerequisites"><label>Prerequisites</label></data>
<data source="level"><label>Level</label></data>
<data source="location"><label>Location</label></data>
<data source="rewards"><label>Rewards</label></data>
<group layout="horizontal">
<header>Quest progression</header>
<data source="previous"><label>Previous</label></data>
<data source="next"><label>Next</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Quests]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
1057bf1c3220419334e60f6b01c07995f871d8f8
Template:Quest/doc
10
24
47
46
2022-11-10T22:14:38Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Quest
| title =
| image = [e.g. "Example.jpg"]
| imagecaption =
| start =
| end =
| prerequisites =
| level =
| location =
| rewards =
| previous =
| next =
}}
</pre>
== Sample output ==
{{Quest
| title = Example infobox
| image = Example.jpg
| start = Chrys
| end = Geran
| prerequisites = None
| level = 5
| location = Earth
| rewards = Justice-Wrought Petals
| previous = A
| next = C
}}
<pre>{{Quest
| title = Example infobox
| image = Example.jpg
| start = Chrys
| end = Geran
| prerequisites = None
| level = 5
| location = Earth
| rewards = Justice-Wrought Petals
| previous = A
| next = C
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
3c80ee4fc3fe45023bd67b3c400b2e64f4f2892a
File:Wiki.png
6
25
49
48
2022-11-10T22:14:40Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Wiki skin images]]
f0235f85e2414431e046ae251792bf050daef5f7
Template:Permission
10
26
51
50
2022-11-10T22:14:41Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file is copyrighted. The copyright holder has given permission for its use.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files used with permission]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
5940d21c4cf55ab1e46623c8d7202220620ea3fc
Template:Fairuse
10
27
53
52
2022-11-10T22:14:41Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file is copyrighted. It will be used in a way that qualifies as fair use under US copyright law.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Fairuse files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
5db6645c70193dbeb65eed77de07f36451e1145c
Template:Self
10
28
55
54
2022-11-10T22:14:42Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file was uploaded by the photographer or author.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files uploaded by the photographer or author]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
c3570ab7a69cc0cdf1478e8b7d45f8c70f1214c0
Template:From Wikimedia
10
29
57
56
2022-11-10T22:14:42Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file was originally uploaded on Wikipedia or another Wikimedia project.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files from WikiMedia projects]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
72fed0e402d6912cd6381ef1b21b52929b041d8c
Template:CC-BY-SA
10
30
59
58
2022-11-10T22:14:44Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file is licensed under the [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:CC-BY-SA files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
b7cc0c0ae4d0cbff86fb66f332cdbfd9ef0c67f1
Template:Other free
10
31
61
60
2022-11-10T22:14:44Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file is licensed under a free license.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Freely licensed files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
a0e93bfb8a804eb54e67553ff50ba57b368ba00d
Template:PD
10
32
63
62
2022-11-10T22:14:45Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file is in the public domain''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Public domain files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
daf709f747ba95ea06112acade4c78177a475e30
Template:Permission/doc
10
33
65
64
2022-11-10T22:14:45Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images as being copyrighted, but the copyright holder has given permission for its use.
;Syntax
:Type <code>{{t|permission}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
e2fc5fa15609d14fe9de91b503904f2b3f363afa
Template:Fairuse/doc
10
34
67
66
2022-11-10T22:14:46Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images as fair use.
;Syntax
:Type <code>{{t|fairuse}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
a0b1f9487b6ecaaa0f6ea70533a69c17d42e01ff
Template:Self/doc
10
35
69
68
2022-11-10T22:14:46Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images as having been uploaded by the photographer or author.
;Syntax
:Type <code>{{t|self}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
8daf839df62f0465275f6ef57c3998c9af9e4e1d
Template:From Wikimedia/doc
10
36
71
70
2022-11-10T22:14:47Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images as having been uploaded on [[wikipedia:|Wikipedia]] or another [[wikimedia:|Wikimedia]] project.
;Syntax
:Type <code>{{t|From Wikimedia}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
077fe0f228cb18bf949fee95011ec7b36fe64033
Template:CC-BY-SA/doc
10
37
73
72
2022-11-10T22:14:48Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images with the CC-BY-SA license.
;Syntax
:Type <code>{{t|CC-BY-SA}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
4fa145ced3f3a218b897f635df8d678eeff73464
Template:Other free/doc
10
38
75
74
2022-11-10T22:14:48Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images with a free license not covered by other image templates.
;Syntax
:Type <code>{{t|Other free}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f4a03ee383d67da50c93408169b82b8217ff1404
Template:PD/doc
10
39
77
76
2022-11-10T22:14:49Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images as being in the public domain.
;Syntax
:Type <code>{{t|PD}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
bf14002371e6786761dfb4a58f4fdaf44062b8cc
Template:Topic
10
40
79
78
2022-11-10T22:14:49Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude>
e8c5bb53e6d20ba0b81fcfa08813051675219442
Template:Topic/doc
10
41
81
80
2022-11-10T22:14:50Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
This template uses your wiki's <code>SITENAME</code> and strips off the word "wiki" leaving what is in most cases the text describing the topic of your wiki. To use this template in its basic form, simply add the {{T|{{BASEPAGENAME}}}} template wherever you want your topic to appear in a sentence or section.
If your wiki's <code>SITENAME</code> minus the word "wiki" is not a good descriptor for your wiki's topic, you may also simply edit the template and replace it with just the text you want displayed.
== Syntax ==
<pre>{{Topic}}</pre>
== Sample output ==
{{Topic}}
<includeonly>[[Category:Templates]]</includeonly><noinclude>[[Category:Template documentation|{{PAGENAME}}]]</noinclude>
54e98cb6fa2fa6aec9e9fa9b138b0cd6d5bf321b
Category:Infobox templates
14
42
83
82
2022-11-10T22:14:51Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Templates
14
43
85
84
2022-11-10T22:14:51Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Maintenance]]
a106a39e26c77e7b2ec90cb83728a6446cb6a1a1
Category:Maintenance
14
44
87
86
2022-11-10T22:14:52Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
The subcategories of this category contain pages that have been identified as needing attention for one or more of the following reasons:
* Changes have been suggested that should be discussed first or are under discussion.
* The page has flaws that need addressing by an editor with the knowledge or skills to help.
* The action the page needs requires special rights.
''See also:''
{{cols|2|
* [[Special:BrokenRedirects|Broken redirects]]
* [[Special:DoubleRedirects|Double redirects]]
* [[Special:UncategorizedCategories|Uncategorized categories]]
* [[Special:UncategorizedFiles|Uncategorized files]]
* [[Special:UncategorizedPages|Uncategorized pages]]
* [[Special:UncategorizedTemplates|Uncategorized templates]]
* [[Special:WantedCategories|Wanted categories]]
* [[Special:WantedFiles|Wanted files]]
* [[Special:WantedPages|Wanted pages]]
* [[Special:WantedTemplates|Wanted templates]]
* [[Special:TrackingCategories|Other special tracking categories]]
}}
[[Category:{{SITENAME}}]]
3646bf22bbf81213a9b8ea11df02ceee8866b235
Category:Image license templates
14
45
89
88
2022-11-10T22:14:52Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Navbox templates
14
46
91
90
2022-11-10T22:14:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:General wiki templates
14
47
93
92
2022-11-10T22:14:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Documentation templates
14
48
95
94
2022-11-10T22:14:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Template documentation
14
49
97
96
2022-11-10T22:14:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template.
[[Category:Templates]]
e1cf9416700d7877b308b2f9051b33cd028dd11d
Template:Main
10
50
99
98
2022-11-10T22:14:54Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|main}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Main_article
--></noinclude>
de20b6a379396a3458f12d72e486fce07869137c
Template:See also
10
51
101
100
2022-11-10T22:14:54Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|seeAlso}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Hatnote
--></noinclude>
e245d8ecb350a8965723151f4fad9d3cafedad60
Template:About
10
52
103
102
2022-11-10T22:14:54Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|about}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:About
--></noinclude>
510109cae7f705952c7a0279d73a7a44fa82d41f
Template:For
10
53
105
104
2022-11-10T22:14:55Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|For}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Hatnote
--></noinclude>
6caebf265784c02a3dba04fe77eb5c5afb52fbd4
Template:Further
10
54
107
106
2022-11-10T22:14:55Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|further}}</includeonly>
<noinclude>{{Documentation|:Template:Hatnote/doc}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Hatnote
--></noinclude>
2b274c2a078defdd0995162869db05d3fc772067
Template:Hatnote
10
55
109
108
2022-11-10T22:14:55Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>{{Documentation}}</noinclude>
47651229f8ca41785babe25d56cdae7ac03ad9e1
Template:Delete
10
56
111
110
2022-11-10T22:14:56Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{MessageBox
|header = Candidate for deletion
|type = delete
|text = This page has been nominated for removal from the wiki.
|comment = Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deletion.
|class = notice hidden plainlinks
|id = delete
}}<includeonly>[[Category:Candidates for deletion]]</includeonly><noinclude>
{{Documentation}}</noinclude>
4173b2533a1aa36de4f2777956f1eae8889808ba
Template:Quote
10
57
113
112
2022-11-10T22:14:57Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{#invoke:Quote|quote}}<noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://starter.fandom.com/wiki/Template:Quote?oldid=4277
--></noinclude>
bf6ed2ef0e8d676125dfd9d9b8b8ad72a18049e3
Template:Disambiguation
10
58
115
114
2022-11-10T22:14:57Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{MessageBox
| header = Disambiguation page for {{PAGENAME}}
| type = disambiguation
| text = The following is a list of links to pages that might share the same title.
| comment = Please follow one of the disambiguation links below or [[Special:Search|search]] to find the page you were looking for if it is not listed. If an [[Special:Whatlinkshere/{{FULLPAGENAME}}|internal link]] led you here, you may wish to change the link to point directly to the intended article.
| class = notice hidden
| id = disambiguation}}
<includeonly>__DISAMBIG__[[Category:Disambiguations]]</includeonly><noinclude>
{{documentation}}</noinclude>
16605ae9114395add2e702cee409d0bd2deb7603
Template:MessageBox
10
59
117
116
2022-11-10T22:14:58Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{#invoke:Mbox|main}}<noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Ambox
--></noinclude>
fab8a2df56fd74147e1709af14e8993cfab7ebe7
Template:Dialogue
10
60
119
118
2022-11-10T22:14:58Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><blockquote data-format="dialogue">{{#invoke:Dialogue|main}}</blockquote></includeonly><noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Dialogue
--></noinclude>
400ad4d61c7eff1f67db8a2116441090d803cb3d
Template:Namespace
10
61
121
120
2022-11-10T22:14:59Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>{{Documentation}}<!--
For a more traditional wikitext version of this template, see
https://templates.fandom.com/wiki/Template:Namespace_detect
--></noinclude>
f5b6ed2c0363fd704c716a6e5420a5cc0546392f
Template:Hatnote/doc
10
62
123
122
2022-11-10T22:15:00Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
The hatnotes used for adding links between articles where more context is important.
Broadly speaking, a hatnote should answer a readers' question: Am I on the right page?
== Usage ==
; Basic usage:
{{hatnote|''text''}}
; All parameters:
{{hatnote|''text''|extraclasses=''extra classes''|selfref=''yes''|category=''no''}}
== Parameters ==
This template accepts the following parameters:
* <code>1</code> - the hatnote text (required)
* <code>extraclasses</code> - any extra CSS classes to be added.
* <code>selfref</code> - If set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references.
* <code>category</code> - If set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This has an effect only if the leftmost parameter (the hatnote text) is omitted.
== Example ==
* <code><nowiki>{{hatnote|Example hatnote text}}</nowiki></code> → {{hatnote|Example hatnote text}}
== Typical types ==
{{T|Main}}, {{T|Further}} are very similar, but indicate either the primary page for a topic or more detailed related topic. They have a nearly identical set of parameters.
;{{T|Main}}: When an article is large, it often has a summary and a link to a main article. This template is used after the heading of the summary, to indicate a link to the subtopic article that has been summarized.
;{{T|Further}}: Used to link to articles containing further information on this topic.
;{{T|See also}}: Used to link to additional articles on related topics.
:;{{T|Main|Main Page}} →:{{Main|Main Page}}
:;{{T|Main|Main Page|Main Page}} →:{{Main|Main Page|Main Page}}
:*<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the namespace prefix). Categories and files are automatically escaped with the [[w:Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''.
:*<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>.
:*<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references.
== Disambiguation ==
Templates such as {{T|About}} and {{T|For}} are to be used in cases where a disambiguation is not needed. In general, disambiguation pages should only be used for 4 or more titles that are mostly or entirely identical, except for a qualifier.
;{{T|About}}: Links the reader to other articles with similar titles or concepts that they may have been seeking instead. The template has several formats, including:
:;{{T|About|Use1}} →:{{About|}}
:;{{T|About|Use1|<nowiki/>|Main Page}} →:{{About|Use1||Main Page}}
:;{{T|About|Use1|<nowiki/>|Main Page|and|Main Page}} →:{{About|Use1||Main Page|and|Main Page}}
:;{{T|About|Use1|Use2|Main Page}} →:{{About|Use1|Use2|Main Page}}
:;{{T|About|Use1|Use2|Main Page|and|Main Page}} →:{{About|Use1|Use2|Main Page|and|Main Page}}
:;{{T|About|Use1|Use2|Main Page|other uses}} →:{{About|Use1|Use2|Main Page|other uses}}
Alternately, a <code>section=yes</code> parameter can be added to the {{T|About}} template for use at the top of a section. When using this parameter, the wording in the template changes to specify that it is being used in a section:
:;{{T|About|Use1|<nowiki>section=yes</nowiki>}} →:{{About|Use1|section=yes}}
:;{{T|About|Use1|<nowiki/>|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1||Main Page|section=yes}}
:;{{T|About|Use1|Use2|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|section=yes}}
:;{{T|About|Use1|Use2|Main Page|and|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|and|Main Page|section=yes}}
:;{{T|About|Use1|Use2|Main Page|other uses|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|other uses|section=yes}}
A <var>text</var> option adds text to the end; note that this should be only used when truly necessary, and the other hatnote templates listed below don't suffice. This template also supports <var>selfref</var>.
;{{T|For}}: Provides links to up to four articles or disambiguation pages. It accepts zero to five parameters.
:;If used without parameters on a page named ''Foo'', the result is
::{{hatnote|For other uses, see [[:Foo (disambiguation)]].}}
:;The first parameter changes the hatnote itself and should be plain text, e.g. {{T|For|similar terms}} yields
::{{hatnote|For similar terms, see [[:Foo (disambiguation)]].}}
:;The second parameter is used to change the resultant link, e.g. {{T|For|similar terms|Main Page}} yields
::{{For|similar terms|Main Page}}
:;The third, fourth and fifth parameters are used to give one, two, or three supplementary links:
:*{{For|similar terms|Main Page|Main Page}}
:*{{For|similar terms|Main Page|Main Page|Main Page}}
:*{{For|similar terms|Main Page|Main Page|Main Page|Main Page}}
:the last being produced by e.g. {{T|For|similar terms|Main Page|Main Page|Main Page|Main Page}}.
== Errors ==
If no hatnote text is supplied, the template will output the following message:
* {{hatnote|category=no}}
If you see this error message, it is for one of four reasons:
# No parameters were specified (the template code was <code><nowiki>{{hatnote}}</nowiki></code>). Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead.
# Some parameters were specified, but the hatnote text wasn't included. For example, the template text <code><nowiki>{{hatnote|extraclasses=seealso}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>|extraclasses=seealso}}</nowiki></code> instead.
# The hatnote text was specified, but that text contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{hatnote|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code> before the hatnote text, like this: <code><nowiki>{{hatnote|1=2+2=4}}</nowiki></code>.
# You tried to access [[Module:Hatnote]] directly by using <code><nowiki>{{#invoke:hatnote|hatnote|</nowiki>''text''<nowiki>}}</nowiki></code>. Use of #invoke in this way has been disabled for performance reasons. Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead.
Pages that contain this error message are tracked in [[:Category:Hatnote templates with errors]].
== Technical details ==
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Hatnote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Hatnote|Hatnote on Templates Wiki]]'''.
The HTML code produced by this template looks like this:
* <code><nowiki><div role="note" class="hatnote"></nowiki>''hatnote text''<nowiki></div></nowiki></code>
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f89b62bda227691a45fd6d42d8bf89b151436cd2
Template:Delete/doc
10
63
125
124
2022-11-10T22:15:00Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark pages for deletion, categorizing them in [[:Category:Candidates for deletion]].
;Syntax
:Type <code>{{t|delete}}</code> on the page to be deleted.'''
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
baa263e149fb470c182f0de3af57178739e61a86
Template:Quote/doc
10
64
127
126
2022-11-10T22:15:00Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
==Description==
To use this template, enter the following and fill in the appropriate fields. Most fields left blank will not show up.
==Syntax==
<pre>
{{Quote
| quote =
| speaker =
| source =
}}
</pre>
As an alternative, these can be placed in positional order.
==Samples==
{{Quote
| quote = When you play the game of thrones, you win or you die.
| speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]]
| source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]]
}}
<pre>
{{Quote
| quote = When you play the game of thrones, you win or you die.
| speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]]
| source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]]
}}
</pre>
or
<pre>
{{Quote
| When you play the game of thrones, you win or you die.
| [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]]
| [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]]
}}
</pre>
== Technical details ==
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Quote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Quote|Quote on Templates Wiki]]'''.
<includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
9257007bdd810476e8723e435841c3f133a204f2
Template:Disambiguation/doc
10
65
129
128
2022-11-10T22:15:01Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:Marks an article as a disambiguation page, adding a banner to the article and categorizing it under [[:Category:Disambiguations]].
;Syntax
:Add <code>{{t|disambiguation}}</code> at the top of a disambiguation page.
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
c0a52d0ac40d9827b4462625985906e37c6f83c9
Template:MessageBox/doc
10
66
131
130
2022-11-10T22:15:01Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{T|MessageBox}} is a template for creating message boxes.
It is highly customizable with classes, inline styles, and provided CSS selectors. Optional features such as an image, left border, right-side text (for e.g. shortcuts), and a dismiss function.
It uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Mbox|on the Global Lua Module page]]. This version is modified to produce a starter style, based on the [[w:c:dev:mediawiki:Global Lua Modules/Mbox.css|basic style from the module]]. To use the full capabilities of this module and remove the default styling, remove the indicated portions of [[Module:Mbox]].
'''For a traditional wikitext version of this template, see [[w:c:templates:Template:Ambox|Ambox on Templates Wiki]]'''.
==Parameters==
For examples of how to use these parameters, see [[#Examples]].
{| class="wikitable" style="width: 100%"
! Parameter name
! Description
! Required?
! Default
|-
| <code>class</code>
| Additional classes to the root <code>.mbox</code> element.
| No
| —
|-
| <code>bordercolor</code>
| The color of the thick left-most border.
| No
| Stylesheet default
|-
| <code>type</code>
| Type of mbox as declared as in CSS with variables. Affects color of the thick left-most border. See [[#Using types]].
| No
| —
|-
| <code>bgcolor</code>
| The color of the mbox's background.
| No
| Stylesheet default
|-
| <code>style</code>
| Additional inline styles to the root <code>.mbox</code> element.
| No
| —
|-
| <code>image</code>
| An image to be added to the left of all text content.
| No
| —
|-
| <code>imagewidth</code>
| The width of the image (height automatically adjusts).
| No
| <code>60px</code>
|-
| <code>imagelink</code>
| The link to which the image points (could link to the relevant maintenance category, per example). If not included, the image will be un-clickable.
| No
| —
|-
| <code>header</code>
| The header (bold text placed at the top). This is typically used to very briefly explain the subject of the mbox itself, as when the mbox is closed, only the header will show.
| No
| —
|-
| <code>text</code>
| Non-bold text placed below the header, typically used to explain the subject of the mbox in further or additional detail. When the mbox is closed, this text will be hidden.
| No
| —
|-
| <code>comment</code>
| Smaller non-bold text placed below the main text, typically used to add additional links or context about the notice. When the mbox is closed, this text will be hidden.
| No
| —
|-
| <code>aside</code>
| Text placed within a small allocation on the right side separated by a light gray border. Most commonly used to show shortcuts to the page in question (such as on policy pages). When the mbox is closed, this text will be hidden.
| No
| —
|-
| <code>id</code>
| By default, one close button will close all mboxes on the page. However, to change this, this parameter may be used, given as the name of the mbox implementation (e.g., "Template:Cleanup" would have <code><nowiki>|id=cleanup</nowiki></code>).
| No
| —
|-
| <code>collapsed</code>
| By default, the mbox will be uncollapsed, and the full contents will be shown. However, to change this, this parameter may be used to set an mbox as collapsed by default (e.g., <code><nowiki>|collapsed=true</nowiki></code> would set the mbox to be collapsed by default).
| No
| —
|}
==Design==
Some communities may wish to customize the appearance of the mboxes. The most common styling options are provided illustrated in CSS.
<syntaxhighlight lang="css" class="mw-collapsible mw-collapsed">
.mbox {
/* the background of the entire box */;
background-color: ;
/* the border color of the entire box */
border-color: ;
/* the border thickness of the entire box */
border-width: ;
/* the default thick left border color; note this can be changed from within the template implementations using the "color" parameter */
border-left-color: ;
/* the rounded-ness of the corners */;
border-radius: ;
/* the baseline font-size of the mbox */
font-size: ;
}
.mbox__content {
/* the padding inside the mbox */
padding: ;
}
.mbox__content__image {
/* the minimum width of the mbox's image (if bigger, use the "imagewidth" parameter in the template) */
width: ;
/* the spacing to the left of the text (i.e., the right of the image) */
padding-right: ;
}
.mbox__content__text__comment {
/* the size of the text in the "comment" parameter */
font-size: ;
}
.mbox__content__aside {
/* any particular modifications to the "aside" area can go here */
/* the maximum width of the aside area */
width: ;
}
.mbox__close {
/* the appearance of the close symbol here */
}
.mbox__close:after {
/* overwrite "content" here if you do not wish for the close symbol to be × */
content: '';
}
.mw-collapsed + .mbox__close {
/* modifications to the close symbol when the box is closed */
}
.mw-collapsed + .mbox__close:after {
/* overwrite "content" here if you do not wish for the close symbol to be + when the box is closed */
content: '';
}
</syntaxhighlight>
; Technical notes
* Additional inline styles to the root <code>.mbox</code> element can be achieved via the <code>style</code> parameter in the template.
== Examples ==
=== Basic MessageBox ===
<pre>
{{MessageBox
|header = Header text here
|text = Normal text here
|id = test1
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|text = Normal text here
|id = test1
}}
=== Using types ===
To use types, CSS variables must be added, such as:
<syntaxhighlight lang="css">
:root {
--type-important: rgba(200, 0, 0, 0.8);
--type-moderate: rgba(233, 124, 47, 0.8);
--type-minor: rgba(241, 197, 37, 0.8);
}
</syntaxhighlight>
If added:
<pre>
{{MessageBox
|header = Header text here
|type = important
|text = Normal text here
|id = test2
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|type = important
|text = Normal text here
|id = test2
}}
Depending on your styling, there may not be a visual difference in the above example.
=== With an image ===
<pre>
{{MessageBox
|header = Header text here
|text = Normal text here
|image = Wiki.png
|imagelink =
|imagewidth = 50px
|id = test3
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|text = Normal text here
|image = Wiki.png
|imagelink =
|imagewidth = 50px
|id = test3
}}
=== With an aside ===
<pre>
{{MessageBox
|header = Header text here
|type = important
|text = Normal text here
|aside = Aside text here
|id = test4
}}</pre>
Produces:
{{#invoke:Mbox|main
|header = Header text here
|type = important
|text = Normal text here
|aside = Aside text here
|id = test4
}}
=== Standard/default style ===
<pre>
{{MessageBox
|header = Header text here
|text = Normal text here
|comment = Comment text here
|image = Wiki.png
|aside = Aside text here
|id = standard
}}</pre>
Produces:
{{#invoke:Mbox|main|header=Header text here |text=Normal text here |comment=Comment text here |image=Wiki.png |aside=Aside text here |id=standard}}
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
ca7c12cf4c7d97a6a3a96c5adc07ee3ceaf78fda
Template:Dialogue/doc
10
67
133
132
2022-11-10T22:15:01Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{t|Dialogue}} facilitates the writing of dialogue in a standard format. The template can handle most standard formats of writing dialogue, and can be indented, bulleted or numbered. '''This template ''cannot'' be <code>subst:</code>'d'''.
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Dialogue|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Dialogue/wikitext|Dialogue on Templates Wiki]]'''.
==Syntax==
This is how to write the template in [[w:Help:wikitext|wikitext]] onto your article:
<pre>{{dialogue
|short=full
|short=full
|short=full
...
|Character|Speech
|Character|Speech
|Character|Speech
...
|cite = dialogue description
}}</pre>
These parameters are explained more fully below.
==Parameters==
'''Named parameters specify name shortcuts. They are all optional.''' They are placed at the top of the template call, like this:
<pre>{{dialogue
|short=full
|short=full
|short=full
...</pre>
Name shortcuts apply to your main dialogue text. If you use a shortcut specified here for a character name, then the full name will be replaced for it.
Named parameters of the form "<code>mood1</code>", "<code>mood2</code>", "<code>mood3</code>", etc., up to "<code>mood10</code>", specify moods for the corresponding line number (e.g. "<code>mood1</code>" specifies line 1). They are placed in a line like this:
<pre>...
|Character|Speech|mood1=angry
|Character|Speech|mood2=quiet
|Character|Speech|mood3=ecstatic
...</pre>
Positional parameters form the text of the dialogue (i.e. any line not containing an "<code>=</code>" will be construed as part of the dialogue.
:;<code>Parameter 1</code> ''(required)'' : Character name speaking
:;<code>Parameter 2</code> ''(optional)'' : Line to speak
:;<code>Parameter 3</code> ''(optional)'' : Next character
:;<code>Parameter 4</code> ''(optional)'' : Next line
:;<code>Parameter 5</code> ''(optional)'' : Next character
:;<code>Parameter 6</code> ''(optional)'' : Next line
:;<code>Parameter 7</code> ''(optional)'' : so on...
Note: if any character is called "<code>action</code>" then that line will be construed as an action line. It still counts as a ''line'' nonetheless.
To write a dialogue description/source, use <code>cite =</code>
==Examples==
Here is an example of a full template usage:
<pre>{{dialogue
|harry=Harry Enfield
|bryan=Bryan Adams
|harry|Hello! |mood1=happy
|bryan|Oh hello there |mood2=surprised
|harry|How are you? |mood3=inquisitive
|bryan|Quite fine thank you. |mood4=reserved
|harry|Oh that's spiffing. |mood5=spiffed
|bryan|It is, isn't it?! |mood6=multo-spiffed
|harry|Quite so. |mood7=bored
|bryan|Well, I'm off! |mood8=joyous
|harry|Ta-ta! |mood9=relieved
|bryan|Au revoir! |mood10=sarcastic
}}</pre>
The above would generate:
{{dialogue
|harry=Harry Enfield
|bryan=Bryan Adams
|harry|Hello! |mood1=happy
|bryan|Oh hello there |mood2=surprised
|harry|How are you? |mood3=inquisitive
|bryan|Quite fine thank you. |mood4=reserved
|harry|Oh that's spiffing. |mood5=spiffed
|bryan|It is, isn't it?! |mood6=multo-spiffed
|harry|Quite so. |mood7=bored
|bryan|Well, I'm off! |mood8=joyous
|harry|Ta-ta! |mood9=relieved
|bryan|Au revoir! |mood10=sarcastic
}}
The below code demonstrates examples of extended use:
<pre>{{dialogue
|george=Georgie Boy
|rachel=Rachel
|action|Enter: George and Rachel
|george|Good morrow dearest Rachel!|mood2=happy
|action|Rachel turns to see him
|rachel|Oh, George, it's you!
|george|...
|rachel|Why won't you say anything?!|mood6=worried
|action|Enter: Guards
|Guards|We are announcing George's arrest!
|rachel|Oh my!|mood9=horrified
|action|George is dragged away.
}}</pre>
The above would generate:
{{dialogue
|george=Georgie Boy
|rachel=Rachel
|action|Enter: George and Rachel
|george|Good morrow dearest Rachel!|mood2=happy
|action|Rachel turns to see him
|rachel|Oh, George, it's you!
|george|...
|rachel|Why won't you say anything?!|mood6=worried
|action|Enter: Guards
|Guards|We are announcing George's arrest!
|rachel|Oh my!|mood9=horrified
|action|George is dragged away.
}}
===Notes===
You can number, bullet or indent your dialogue:
<pre>:{{dialogue|Me|Hello|You|Howdido!}}</pre>
:{{dialogue|Me|Hello|You|Howdido!}}
<pre>#{{dialogue|Me|Hello|You|Howdido!}}
#{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}</pre>
#{{dialogue|Me|Hello|You|Howdido!}}
#{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}
<pre>*{{dialogue
|angel=Fortitude
|angel|I am an angel!|Crowd|We don't believe you!}}
*{{dialogue
|angel=Fortitude
|angel|But I'm being quite serious!|Crowd|Too bad for you then!}}</pre>
*{{dialogue
|angel=Fortitude
|angel|I am an angel!|Crowd|We don't believe you!}}
*{{dialogue
|angel=Fortitude
|angel|But I'm being quite serious!|Crowd|Too bad for you then!}}
You will get the odd spacing error (e.g. "Speech<code><nowiki><space></nowiki></code>") if you lay out your dialogue on multiple lines.
<includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
56b3a94f307db52b25c728122e451a63e806c791
Template:Namespace/doc
10
68
135
134
2022-11-10T22:15:02Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This is the {{t|Namespace}} meta-template. It helps other templates detect what type of page they are on.
It detects and groups all the different [[Wikipedia:Namespace#Enumeration|namespaces]] used on Fandom into several types:
; main : Main (i.e. article) space, where normal articles are kept.
; talk : Any talk space, including page names that start with "Talk:", "User talk:", "File talk:", etc.
;user
;file
;mediawiki
;template
;help
;category
: The remaining namespaces.
; other : Any namespaces that were not specified as a parameter to the template (see explanation below).
For backwards compatibility, this template handles '''image''' as if '''file'''. '''image''' (<nowiki>[[Image:...]]</nowiki>) is now deprecated.
'''Note:''' For most cases it may be better to use the simpler namespace detection templates (see the [[#See also|see also]] section below). This template is more prone to human errors such as misspelling parameter names.
This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Namespace_detect|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Namespace_detect|Namespace_detect on Templates Wiki]]'''.
== Usage ==
This template takes one or more parameters named after the different page types as listed above. Like this:
<pre>
{{Namespace
| main = Article text
| talk = Talk page text
| other = Other pages text
}}
</pre>
If the template is on a main (article) page, it will return this:
: {{Namespace |demospace=main
| main = Article text
| talk = Talk page text
| other = Other pages text
}}
If the template is on any other page than an article or a talk page, it will return this:
: {{Namespace
| main = Article text
| talk = Talk page text
| other = Other pages text
}}
The example above made the template return something for all page types. But if we don't use the '''other''' parameter or leave it empty, it will not return anything for the other page types. Like this:
<pre>
{{Namespace
| file = File page text
| category = Category page text
| other =
}}
</pre>
On any pages other than file and category pages the code above will render nothing.
<!-- Do not remove this one. It is supposed to render nothing, but we have it here for testing purposes. -->
: {{Namespace
| file = File page text
| category = Category page text
| other =
}}
By using an empty parameter, you can make it so the template doesn't render anything for some specific page type. Like this:
<pre>
{{Namespace
| main =
| other = Other pages text
}}
</pre>
The code above will render nothing when on mainspace (article) pages, but will return this when on other pages:
: {{Namespace
| main =
| other = Other pages text
}}
== Demospace and page ==
For testing and demonstration purposes, this template can take two parameters named '''demospace''' and '''page'''.
'''demospace''' understands any of the page type names used by this template, including the '''other''' type. It tells the template to behave like it is on some specific type of page. Like this:
<pre>
{{Namespace
| main = Article text
| other = Other pages text
| demospace = main
}}
</pre>
No matter on what kind of page the code above is used, it will return this:
: {{Namespace
| main = Article text
| other = Other pages text
| demospace = main
}}
The '''page''' parameter instead takes a normal pagename, making this template behave exactly as if on that page. The pagename doesn't have to be an existing page. Like this:
<pre>
{{Namespace
| user = User page text
| other = Other pages text
| page = User:Example
}}
</pre>
No matter on what kind of page the code above is used, it will return this:
: {{Namespace
| user = User page text
| other = Other pages text
| page = User:Example
}}
It can be convenient to let your template understand the '''demospace''' and/or '''page''' parameter and send it on to the {{T|Namespace}} template. Like this:
<pre>
{{Namespace
| main = Article text
| other = Other pages text
| demospace = {{{demospace|}}}
| page = {{{page|}}}
}}
</pre>
If both the '''demospace''' and '''page''' parameters are empty or undefined, the template will detect page types as usual.
== Parameters ==
List of all parameters:
<pre>
{{Namespace
| main =
...
| other =
| demospace = {{{demospace|}}} / main / talk / user /
file / mediawiki / template /
help / category / other
| page = {{{page|}}} / User:Example
}}
</pre>
== Technical details ==
If you intend to feed tables as content to the numbered parameters of this template, you need to know this:
[[w:Help:Template|Templates]] have a problem handling parameter data that contains pipes "<code>|</code>" unless the pipe is inside another template <code><nowiki>{{name|param1}}</nowiki></code> or inside a piped link <code><nowiki>[[w:Help:Template|help]]</nowiki></code>. Thus templates can not handle [[w:Help:Table|wikitables]] as input unless you escape them by using the <code><nowiki>{{!}}</nowiki></code> [[w:Help:Magic words|magic word]]. This makes it hard to use wikitables as parameters to templates. Instead, the usual solution is to use HTML wikimarkup for the table code, which is more robust.
<includeonly>[[Category:General wiki templates]]{{#ifeq:{{SUBPAGENAME}}|sandbox|[[Category:Namespace manipulation templates]]}}</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
abd1a20286343a0c76ff9c575682bd5d011f5a6d
Module:Dialogue
828
69
137
136
2022-11-10T22:15:02Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Dialogue module from the [[w:c:dev:Global Lua Modules]].
local Dialogue = require('Dev:Dialogue')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Dialogue]]
-- The last line produces the output for the template
return Dialogue
a147d7d4d5837eeb0910d21be2904bbae6658ad2
Module:Hatnote
828
70
139
138
2022-11-10T22:15:03Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]].
local H = require('Dev:Hatnote')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]]
-- The last line produces the output for the template
return H
d52966e186d4771ee7844be7f402467c51644349
Module:Mbox
828
71
141
140
2022-11-10T22:15:03Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]].
local Mbox = require('Dev:Mbox')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]]
-- The imported Module is overwritten locally to include default styling.
-- For a more flexible Mbox experience, delete the function below and import
-- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css
-- or paste (and modify as you like) its contents in your wiki's
-- [[MediaWiki:Wikia.css]] (see [[w:Help:Including_additional_CSS_and_JS]])
-- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox
-- for more customization inspiration
--
-- BEGIN DELETION HERE
--
local getArgs = require('Dev:Arguments').getArgs
local localCSS = mw.loadData('Module:Mbox/data').localStyle
function Mbox.main(frame)
local args = getArgs(frame)
-- styles
local styles = {}
if args.bordercolor then
styles['border-left-color'] = args.bordercolor
elseif args.type then
styles['border-left-color'] = 'var(--type-' .. args.type .. ')'
end
if args.bgcolor then
styles['background-color'] = args.bgcolor
end
-- images
local image = args.image or ''
local imagewidth = args.imagewidth or '80px'
local imagelink = ''
if args.imagelink then
imagelink = '|link=' .. args.imagelink
end
local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink)
-- id for closure
local id = args.id or 'mbox'
local container = mw.html.create('div')
:addClass('mbox')
:addClass(args.class)
:css(styles)
:css(localCSS['mbox'])
:cssText(args.style)
local content = container:tag('div')
:addClass('mbox__content')
:css(localCSS['mbox__content'])
if args.image then
local image = content:tag('div')
:addClass('mbox__content__image')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__image'])
:wikitext(imagewikitext)
if args.collapsed then
image:addClass('mw-collapsed')
end
end
local contentwrapper = content:tag('div')
:addClass('mbox__content__wrapper')
:css(localCSS['mbox__content__wrapper'])
if args.header then
contentwrapper:tag('div')
:addClass('mbox__content__header')
:css(localCSS['mbox__content__header'])
:wikitext(args.header)
end
if args.text then
local text = contentwrapper:tag('div')
:addClass('mbox__content__text')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__text'])
:wikitext(args.text)
if args.collapsed then
text:addClass('mw-collapsed')
end
if args.comment then
text:tag('div')
:addClass('mbox__content__text__comment')
:css(localCSS['mbox__content__text__comment'])
:wikitext(args.comment)
end
end
contentwrapper:tag('span')
:addClass('mbox__close')
:addClass('mw-customtoggle-' .. id)
:css(localCSS['mbox__close'])
:attr('title', 'Dismiss')
if args.aside then
local aside = content:tag('div')
:addClass('mbox__content__aside')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__aside'])
:wikitext(args.aside)
if args.collapsed then
aside:addClass('mw-collapsed')
end
end
return container
end
--
-- END DELETION HERE
--
-- The last line produces the output for the template
return Mbox
1c196d668f9209faef3e9a78c1f082f1c8573042
Module:Mbox/data
828
72
143
142
2022-11-10T22:15:04Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
local localStyle = {
['mbox'] = {
['display'] = 'flex',
['position'] = 'relative',
['border'] = '1px solid #d6d6d6',
['border-left-width'] = '8px',
['border-left-color'] = '#d6d6d6',
['border-radius'] = '3px',
['margin-bottom'] = '5px',
['min-height'] = '32px'
},
['mbox__content'] = {
['display'] = 'table',
['box-sizing'] = 'border-box',
['width'] = '100%',
['padding'] = '8px 15px'
},
['mbox__content__image'] = {
['display'] = 'table-cell',
['width'] = '40px',
['height'] = '100%',
['text-align'] = 'center',
['vertical-align'] = 'middle',
['padding-right'] = '15px'
},
['mbox__content__wrapper'] = {
['display'] = 'table-cell',
['vertical-align'] = 'middle'
},
['mbox__content__header'] = {
['display'] = 'block',
['font-weight'] = 'bold'
},
['mbox__content__text'] = {
['display'] = 'block'
},
['mbox__content__text__comment'] = {
['font-size'] = 'small'
},
['mbox__content__aside'] = {
['display'] = 'table-cell',
['width'] = '100px',
['vertical-align'] = 'middle',
['text-align'] = 'center',
['padding-left'] = '15px',
['border-left'] = '1px solid #d6d6d6'
},
['mbox__close'] = {
['position'] = 'absolute',
['right'] = '0',
['top'] = '0',
['padding'] = '2px 7px',
['font-weight'] = 'bold',
['font-size'] = '16px',
['color'] = '#bbb',
['cursor'] = 'pointer',
['transition'] = 'all .15s ease-in'
}
}
return { localStyle = localStyle }
7afdc5979e3b8bc8d21b52929058ba24c351dbdc
Module:Namespace detect
828
73
145
144
2022-11-10T22:15:05Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Namespace_detect module from the [[w:c:dev:Global Lua Modules]].
local NS = require('Dev:Namespace_detect')
-- Local configuration can be modified in
-- [[Module:Namespace detect/data]] and
-- [[Module:Namespace detect/config]]
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace detect]]
-- The last line produces the output for the template
return NS
108c1bd4f38e4a0b40b9a85178a4d68cd557cef3
Module:Namespace detect/config
828
74
147
146
2022-11-10T22:15:05Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports from the [[w:c:dev:Global Lua Modules]].
local nsConfiguration = require('Dev:Namespace_detect/config')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]]
-- The imported Module is overwritten locally to include default configuration.
-- For a more flexible experience, delete the page import
-- and paste (and modify as you like) its contents into this page
-- https://dev.fandom.com/wiki/Module:Namespace_detect/config
-- The last line produces the output for the template
return nsConfiguration
22ca76ef47387cf20b5fcc7d1f14687f0b2da915
Module:Namespace detect/data
828
75
149
148
2022-11-10T22:15:06Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports from the [[w:c:dev:Global Lua Modules]].
local nsData = require('Dev:Namespace_detect/data')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]]
-- The imported Module is overwritten locally to include default configuration.
-- For a more flexible experience, delete the page import
-- and paste (and modify as you like) its contents into this page
-- https://dev.fandom.com/wiki/Module:Namespace_detect/data
-- The last line produces the output for the template
return nsData
4056c252664c31f05a9d54c48fcd865cdf41dd9f
Module:Navbox
828
76
151
150
2022-11-10T22:15:06Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Navbox module from the [[w:c:dev:Global Lua Modules]].
local N = require('Dev:Navbox')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Navbox]]
-- The last line produces the output for the template
return N
7c5d05d6cc02dafdd64b46ca3fbdc3f808e53e5b
Module:Quote
828
77
153
152
2022-11-10T22:15:07Z
BEELETH
2
1 revision imported: Import from Fandom
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Quote module from the [[w:c:dev:Global Lua Modules]].
local Quote = require('Dev:Quote')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Quote]]
-- The last line produces the output for the template
return Quote
6918bf52f0c3bdbd83cc4611b6243a659e7d800b
Category:Disambiguations
14
78
155
154
2022-11-10T22:15:07Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:{{SITENAME}}]]
dd8aaa34cf600c1567d240a3f4bc615164a11592
Category:Quote templates
14
79
157
156
2022-11-10T22:15:08Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Notice templates
14
80
159
158
2022-11-10T22:15:08Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Category:Candidates for deletion
14
81
161
160
2022-11-10T22:15:09Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
__EXPECTUNUSEDCATEGORY__
This category contains articles that have been marked as candidates for deletion with the {{T|Delete}} template.
'''Administrators, before deleting these pages''' make sure you check each page's discussion page, what links to each page, and the history of each page before proceeding with the deletion.
[[Category:Maintenance]]
a73d7b53cf0697a0682f842f1a71aafbe127aade
Template:=
10
82
163
162
2022-11-10T22:15:09Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>=</includeonly><noinclude>
{{documentation}}<noinclude>
8f9d55b93874a691b84a9b6acb54bc6dd01fbf39
Template:=/doc
10
83
165
164
2022-11-10T22:15:09Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used when escaping <code>=</code> when contained in [[w:Help:Parser functions|Parser functions]].
;This template cannot be substituted.
;Syntax
:Insert this template using <code>{{t|{{=}}}}</code>
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
ce8f267527b35c852e8190c38416584783aa37ac
Template:Clear
10
84
167
166
2022-11-10T22:15:10Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude>
{{documentation}}</noinclude>
02f4c0e17d50c41f902cad74e6d937f585ba4719
Template:Cols
10
85
169
168
2022-11-10T22:15:10Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><div style="column-count: {{{1}}};">{{{2}}}</div></includeonly><noinclude>
{{documentation}}</noinclude>
7e455c29d8571535f2a7692bcd711e2d0547441c
Template:Space
10
86
171
170
2022-11-10T22:15:10Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly> </includeonly><noinclude>
{{documentation}}</noinclude>
e1c3d6d869303e7cc9d8a997c69b01995b7e4928
Template:Tocright
10
87
173
172
2022-11-10T22:15:11Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><div style="float:right; clear:{{{clear|right}}}; margin-bottom:.5em; padding:.5em 0 .8em 1.4em; background:transparent; max-width:20em;">__TOC__</div></includeonly><noinclude>
{{documentation}}</noinclude>
e05836955bb88801d044130d69154745f45c7642
Template:Trim
10
88
175
174
2022-11-10T22:15:11Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{{1}}}|}}</includeonly><noinclude>
{{documentation}}</noinclude>
21c7177ac37ea769b22ca26a2493df055a56f87a
Template:Cols/doc
10
89
177
176
2022-11-10T22:15:11Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
This template formats the text into the specified number of columns.
;Syntax
<pre>{{cols|<# of columns>|<content>}}</pre>
Especially useful to wrap long lists of items into multiple columns.
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
763fc74c9235663a500bcc69a50d425c77c16cb0
Template:Space/doc
10
90
179
178
2022-11-10T22:15:12Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
This template allows you to force a space in areas that strip whitespace.
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
e361d3f5c2ca3c7d7503d9bb0d311e9d440c3cc2
Template:Tocright/doc
10
91
181
180
2022-11-10T22:15:13Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
{{t|tocright}} forces the auto-generated Table of Contents for an article to appear floated to the right side of the page, in order to improve article layout.
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
1449f71ce473315e9f2ad72064ee5c76ed00c89d
Template:Trim/doc
10
92
183
182
2022-11-10T22:15:13Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
This template trims whitespace from the beginning and end of the supplied value. It works by using the simple hack of filtering it through the <code>#if</code> parser function.
;Syntax
<nowiki>{{trim| value }}</nowiki>
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f1f126e3f6fe8474d693ec499d71a9c4067043f9
Template:Clear/doc
10
93
185
184
2022-11-10T22:15:13Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
This template allows you to clear the left side, right side, or both sides of the page. Clearing means that the content following the template will not be displayed until the existing content on the specified sides (for example, "hanging" or floating images or blocks) is displayed completely. This template is often used so that the text does not flow around unrelated images.
The template adds the following code to the page: <code><nowiki><div style="clear:left/right/both;"></div></nowiki></code> (the value after <code>clear</code> depends on the parameters). This code affects elements with the CSS property <code>float</code>, including files floated to the side (for example, <code><nowiki>[[File:Image.png|right]]</nowiki></code>).
;Syntax
* To clear both sides of the page, add the code {{t|Clear}}.
* To clear only the left side of the page, add the code {{t|Clear|left}}.
* To clear only the right side of the page, add the code {{t|Clear|right}}.
You can also use {{t|-}} instead of {{t|Clear}} as a shorthand call for this template.
__NOTOC__
;Example
<pre style="display:table">
=== Section 1 ===
[[File:Example.jpg|200px|right]]
Section 1 text.
=== Section 2 ===
Section 2 text.
{{Clear|right}}
=== Section 3 ===
Section 3 text.
</pre>
This code produces the following result:
----
=== Section 1 ===
[[File:Example.jpg|200px|right]]
Section 1 text.
=== Section 2 ===
Section 2 text.
{{Clear|right}}
=== Section 3 ===
Section 3 text.
----
As you can see above, the example image added in section 1 is displayed to the right and extends down through section 2, while the {{t|Clear}} template is called at the end of the second section, resulting in the example image not being next to section 3. Thus, one use of the {{t|Clear}} template is to control which elements are displayed next to which other elements.
== See also ==
* [https://developer.mozilla.org/en-US/docs/Web/CSS/clear CSS property <code>clear</code> on MDN]
* [https://developer.mozilla.org/en-US/docs/Web/CSS/float CSS property <code>float</code> on MDN]
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
23cbf4a368710af74b5a7e729c6a7205939cd5de
File:Example.jpg
6
94
187
186
2022-11-10T22:15:14Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Summary ==
{{PD}}
[[Category:Images]]
b45ad4275ad2f01c536d8fee443ea7264309586b
Category:Images
14
95
189
188
2022-11-10T22:15:15Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Media]]
b141d2b9971d6efe9f59bd03449781e71411c631
Category:Media
14
96
191
190
2022-11-10T22:15:15Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:{{SITENAME}}]]
dd8aaa34cf600c1567d240a3f4bc615164a11592
Template:Game
10
97
193
192
2022-11-10T22:15:16Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox>
<title source="title">
<default>{{PAGENAME}}</default>
</title>
<image source="image">
<caption source="caption"/>
</image>
<data source="developer"><label>Developer</label></data>
<data source="publisher"><label>Publisher</label></data>
<data source="engine"><label>Engine</label></data>
<data source="version"><label>Version</label></data>
<data source="platform"><label>Platform</label></data>
<data source="releasedate"><label>Release date</label></data>
<data source="genre"><label>Genre</label></data>
<data source="mode"><label>Mode</label></data>
<data source="rating"><label>Rating</label></data>
<data source="media"><label>Media</label></data>
<group collapse="open">
<header>System requirements</header>
<data source="requirements"></data>
</group>
</infobox></includeonly><noinclude>{{Documentation}}</noinclude>
632ebe6f3e8bab75f012f57996157e6b71f04c2c
Template:Game/doc
10
98
195
194
2022-11-10T22:15:16Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>{{Game
| title = The game's name, displayed on top of the infobox
| image = [e.g. "Example.jpg"]
| developer =
| publisher =
| engine = The engine the game runs on
| version = Most recently released version of the game. If your wiki does patch notes, you may wish to link to those.
| platform = Platform(s) the game is available on
| releasedate = When the game released
| genre = Genre(s) the game is classified as
| mode = Singeplayer, multiplayer, etc.
| rating = ESRB / PEGI, etc. ratings
| media = What media the game is available on (digital, cartridge, cd, etc.)
| requirements = System requirements
}}</pre>
== Sample output ==
{{Game
| title = The Game of Flower
| image = Example.jpg
| developer =
| publisher =
| engine =
| version =
| platform = PC
| releasedate = Soon
| genre = RPG
| mode = Single player
| rating =
| media =
| requirements = Cutting edge hardware
}}
<pre>{{Game
| title = The Game of Flower
| image = Example.jpg
| developer =
| publisher =
| engine =
| version =
| platform = PC
| releasedate = Soon
| genre = RPG
| mode = Single player
| rating =
| media =
| requirements = Cutting edge hardware
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f43ae1af35184ba75281f54d6c3683a202f5fd69
Template:LicenseBox
10
99
197
196
2022-11-10T22:15:17Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><div style="border-collapse: collapse; border-color: #d6d6d6; border-radius: 3px; border-style: solid; border-left-width: 8px; border-bottom-width: 1px; border-right-width: 1px; border-top-width: 1px; display: flex; margin: 0 auto 5px auto; min-height: 32px; padding: 0.25em 0.5em; {{{style|}}}" class="article-table plainlinks {{{class|}}}">
{{#if:{{{image|}}} | <span style="padding: 2px 0px 2px 0.5em; text-align: center; width: 60px;">[[File:{{{image}}}{{!}}48px{!}}alt{{=}}]]</span>}}
{{{text|''Your license text is not specified''}}}
</div></includeonly><noinclude>
{{documentation}}</noinclude>
069ed63c4b14e0275262b6d3e8d9e91ecba49744
Template:LicenseBox/doc
10
100
199
198
2022-11-10T22:15:18Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to create the box used by the various image license templates. The default styling is currently geared to a light-themed wiki. If your wiki has a dark theme and this template is too bright relative to the other elements on your wiki, simply change the following style parameters:
:<code>background-color:</code> This is the color of the background and is currently set to: <code>#fefefe</code>
:<code>border-color:</code> This is the color of the borders and is currently set to: <code>#d6d6d6</code>
:<code>color:</code> This is the color of the text and is currently set to: <code>#333</code>
;Syntax
:Type <code>{{t|LicenseBox|text{{=}}License text}}</code> on the image information page.
<includeonly>[[Category:Image license templates| ]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
9ec2738036e3818826b937975731274577856c0d
Template:-
10
101
201
200
2022-11-10T22:15:19Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
#REDIRECT [[Template:Clear]]
1a2aa4a9ba7478e54a2b21cbce68887ea297ea86
Template:Stub
10
102
203
202
2022-11-10T22:15:19Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{MessageBox
|header = Stub
|type = stub
|text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''
|comment =
|class = notice hidden plainlinks
|id = stub
}}<includeonly>[[Category:Stubs]]</includeonly><noinclude>
{{Documentation}}</noinclude>
613ef53fa1801107adb93e3c0eb28209ba253a26
Category:Stubs
14
103
205
204
2022-11-10T22:15:19Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
__EXPECTUNUSEDCATEGORY__
This category contains articles that are noticeably incomplete regardless of their length and are tagged with the {{T|Stub}} template. If any of these articles seem to approach completion or manage to become complete, please remove the template from the page so they are no longer listed here.
Please help our Wiki by writing in these articles if you know what you're talking about.
[[Category:Maintenance]]
119791ec2b436de13f77e8541c85704c8902eaaf
Template:Stub/doc
10
104
207
206
2022-11-10T22:15:20Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category.
<includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
fe9e5e7f5e645666194f69dc88d7d12b5429e8f8
Template:MIT
10
105
209
208
2022-11-10T22:15:20Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:MIT license files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
fa53e460d1a0d2cfb9e350fa64292cc428aed859
Template:LGPL
10
106
211
210
2022-11-10T22:15:21Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:LGPL files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
066b54eb9300540d46a07b5148865821bd3b2f08
Template:GFDL
10
107
213
212
2022-11-10T22:15:22Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''[[Wikipedia:Text of the GNU Free Documentation License|GNU Free Documentation License]]''', Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:GFDL files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
b3c309cd585718bb7808409474f98a1c5ec46103
Template:MIT/doc
10
108
215
214
2022-11-10T22:17:47Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images using the MIT license.
;Syntax
:Type <code>{{t|MIT}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
f243f408a7cb3acce5635655a2648b3dcd892584
Template:LGPL/doc
10
109
217
216
2022-11-10T22:17:48Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images using the LGPL.
;Syntax
:Type <code>{{t|LGPL}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
a1352dd235ba24762d42130c24a5a7971e1cdd31
Template:GFDL/doc
10
110
219
218
2022-11-10T22:17:48Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images using the GFDL.
;Syntax
:Type <code>{{t|GFDL}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
cb8fb84dfc8e1d8b8544fdff7530dce231764a63
Template:Nolicense
10
111
221
220
2022-11-10T22:17:49Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonly>}}<noinclude>
{{documentation}}</noinclude>
a99128c5d8a0cd0723b13b6d9e5fd78b18dbedec
Category:Unattributed files
14
112
223
222
2022-11-10T22:17:49Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
__EXPECTUNUSEDCATEGORY__
The files in this category do not have an appropriate license selected and are tagged with the {{t|nolicense}} template.
Administrators should review files in this category and either:
* Update the file page with an appropriate if one can be easily determined.
* Delete the image, though it is good idea to give the uploader a chance to select a license first.
[[Category:Images]]
[[Category:Maintenance]]
fe16ed203269a56dcbf8a76f72943484fe67047f
Template:Nolicense/doc
10
113
225
224
2022-11-10T22:17:49Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
;Description
:This template is used to mark images where the copyright status is not known. It automatically adds the images to the [[:Category:Unattributed files|Unattributed files]] category for later maintenance
;Syntax
:Type <code>{{t|Nolicense}}</code> on the image information page.
<includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
346dcb940ca838c854f75f3db5229b97cce87d40
File:Favicon.ico
6
114
227
226
2022-11-10T22:17:50Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Licensing ==
{{CC-BY-SA}}
[[Category:Wiki skin images]]
4d9dc3162be921e39ea7166659dae4b8fe461b71
Category:Hatnote templates with errors
14
115
229
228
2022-11-10T22:17:50Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Maintenance]]
a106a39e26c77e7b2ec90cb83728a6446cb6a1a1
Module:Mbox/doc
828
116
231
230
2022-11-10T22:17:51Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module is used by most of the basic [[:Category:Notice templates|Notice templates]] and is invoked by {{t|MessageBox}}.
f4a47833d87441e40c6613bb641eb72f6207cbb1
Module:Mbox/data/doc
828
117
233
232
2022-11-10T22:17:51Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This is a sub-module of [[Module:Mbox]] and is used to specify the CSS properties for message boxes.
fcd42c844d485c7da3317a85c9521ea96145cb35
Module:Quote/doc
828
118
235
234
2022-11-10T22:17:51Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module is used by most of the basic [[:Category:Quote templates|Quote templates]] and is invoked by {{t|Quote}}.
665dce984d14e47c31477a42382fecb536de1da7
Module:Dialogue/doc
828
119
237
236
2022-11-10T22:17:52Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module is invoked by the {{t|Dialogue}} template.
d22c926bd1a5c2221b42dc1a05b2326ecaaa6712
Module:Hatnote/doc
828
120
239
238
2022-11-10T22:17:52Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module is invoked by the {{t|Hatnote}} template, which is used by a number of [[:Category:Notice templates|Notice templates]].
b5c1fc43f0f6bd96416f2fec21a7da0b34ae8aac
Module:Navbox/doc
828
121
241
240
2022-11-10T22:17:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module is invoked by the {{t|Navbox}} template. Navbox templates are not displayed for mobile users.
23d4ed4b22c8bf7316431e1f6df6d4d5d9de1ef5
Module:Namespace detect/doc
828
122
243
242
2022-11-10T22:17:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module is invoked by the {{t|Namespace}} template.
157d889ae2f345f719a68f459ee2ca550d14afb5
Module:Namespace detect/data/doc
828
123
245
244
2022-11-10T22:17:53Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons.
4b5f88c95a81f026633adaae2556eeaa2896fd6f
Module:Namespace detect/config/doc
828
124
247
246
2022-11-10T22:17:54Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language.
To activate a configuration item, you need to uncomment it. This means that you need to remove the text "-- " at the start of the line.
5b3ec654956a66588b67fedc310584e2769e6f5c
Template:Series
10
125
249
248
2022-11-10T22:17:54Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox>
<title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title>
<image source="image"><caption source="caption" /></image>
<data source="release"><label>First released</label></data>
<data source="seasons"><label>Seasons</label></data>
<data source="episodes"><label>Episodes</label></data>
<data source="runtime"><label>Run time</label></data>
<data source="genre"><label>Genre</label></data>
<data source="network"><label>Network</label></data>
<data source="distrib"><label>Distributor</label></data>
<data source="creator"><label>Created by</label></data>
<data source="writer"><label>Written by</label></data>
<data source="director"><label>Directed by</label></data>
<data source="composer"><label>Composer</label></data>
<data source="based on"><label>Based on</label></data>
<data source="exec prod"><label>Executive producer</label></data>
<data source="producer"><label>Producer</label></data>
<data source="prod co"><label>Production company</label></data>
<data source="country"><label>Country</label></data>
<data source="language"><label>Language</label></data>
</infobox></includeonly><noinclude>{{documentation}}</noinclude>
f2e00daecd3f3df5c31267e0a9ffd721ac2f186d
Template:Series/doc
10
126
251
250
2022-11-10T22:17:55Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Series
| title =
| image =
| caption =
| release =
| seasons =
| episodes =
| runtime =
| genre =
| network =
| distrib =
| creator =
| writer =
| director =
| composer =
| based on =
| exec prod =
| producer =
| prod co =
| country =
| language =
}}</pre>
== Sample output ==
{{Series
| title = ''Default page title''
| image = Wiki.png
| caption = Test
| release = Test
| seasons = Test
| episodes = Test
| runtime = Test
| genre = Test
| network = Test
| distrib = Test
| creator = Test
| writer = Test
| director = Test
| composer = Test
| based on = Test
| exec prod = Test
| producer = Test
| prod co = Test
| country = Test
| language = Test
}}
<pre>{{Series
| title = ''Default page title''
| image = Wiki.png
| caption = Test
| release = Test
| seasons = Test
| episodes = Test
| runtime = Test
| genre = Test
| network = Test
| distrib = Test
| creator = Test
| writer = Test
| director = Test
| composer = Test
| based on = Test
| exec prod = Test
| producer = Test
| prod co = Test
| country = Test
| language = Test
}}</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
7f9a7daecb805234290cd4addefc0c049fe125ce
Template:Film
10
127
253
252
2022-11-10T22:17:55Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox>
<title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title>
<image source="image"><caption source="caption"/></image>
<group>
<data source="premiere"><label>Premiere date</label></data>
<data source="genre"><label>Genre</label></data>
<data source="rating"><label>Rating</label></data>
<data source="runtime"><label>Runtime</label></data>
<data source="director"><label>Directed by</label></data>
<data source="writer"><label>Written by</label></data>
<data source="music"><label>Music by</label></data>
<data source="producer"><label>Produced by</label></data>
<data source="budget"><label>Budget</label></data>
<data source="earned"><label>Box Office</label></data>
</group>
<group layout="horizontal">
<header>Series</header>
<data source="previous"><label>← Previous</label></data>
<data source="next"><label>Next →</label></data>
</group>
</infobox>{{Namespace|main=[[Category:Films]]}}</includeonly><noinclude>{{documentation}}</noinclude>
92b5337f22ec52309cba873beaf3cdb11d2f64e0
Template:Film/doc
10
128
255
254
2022-11-10T22:17:56Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Film
| title =
| image =
| caption =
| premiere =
| genre =
| rating =
| runtime =
| director =
| writer =
| music =
| producer =
| budget =
| earned =
| previous =
| next =
}}
</pre>
== Sample output ==
{{Film
| title = This is a test
| image = Wiki.png
| caption = This is a test
| premiere = This is a test
| genre = This is a test
| rating = This is a test
| runtime = This is a test
| director = This is a test
| writer = This is a test
| music = This is a test
| producer = This is a test
| budget = This is a test
| earned = This is a test
| previous = This is a test
| next = This is a test
}}
<pre>
{{Film
| title = This is a test
| image = Wiki.png
| caption = This is a test
| premiere = This is a test
| genre = This is a test
| rating = This is a test
| runtime = This is a test
| director = This is a test
| writer = This is a test
| music = This is a test
| producer = This is a test
| budget = This is a test
| earned = This is a test
| previous = This is a test
| next = This is a test
}}
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
b085f97e35a2ac96b5ddf92a22e98fbd93933736
Template:Season
10
129
257
256
2022-11-10T22:17:56Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox type="Season">
<title source="title"><default>{{PAGENAME}}</default></title>
<image source="image"><caption source="caption"/></image>
<data source="season"><label>Season</label></data>
<data source="episodes"><label>Episodes</label></data>
<data source="premiere"><label>Premiered</label></data>
<group layout="horizontal">
<header>Navigation</header>
<data source="previous"><label>← Previous</label></data>
<data source="next"><label>Next →</label></data>
</group>
</infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Seasons]]}}</includeonly><noinclude>{{documentation}}</noinclude>
2e09c5f43c99d98363971b63ad639874c5e6c452
Template:Season/doc
10
130
259
258
2022-11-10T22:17:57Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Season
| title =
| image =
| caption =
| season =
| episodes =
| premiere =
| previous =
| next =
}}
</pre>
== Sample output ==
{{Season
| title = This is a test
| image = Wiki.png
| caption = This is a test
| season = This is a test
| episodes = This is a test
| premiere = This is a test
| previous = This is a test
| next = This is a test
}}
<pre>
{{Season
| title = This is a test
| image = Wiki.png
| caption = This is a test
| season = This is a test
| episodes = This is a test
| premiere = This is a test
| previous = This is a test
| next = This is a test
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
b3f82f2223cf6f8323820bce6de5427e4b6a1380
Template:Cast
10
131
261
260
2022-11-10T22:17:57Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly><infobox>
<title source="name"><default>{{PAGENAME}}</default></title>
<image source="image"><caption source="caption" /></image>
<data><label>Born</label>
<default>{{#if: {{{birthname|}}} | {{{birthname|}}} }}{{#if: {{{birthdate|}}} | {{#if: {{{birthname|}}} | <br />}}{{{birthdate|}}}{{#if: {{{birthplace|}}} | <br />}} }}{{#if: {{{birthplace|}}} | {{#if: {{{birthdate|}}} || {{#if: {{{birthname|}}}|<br />}} }}{{{birthplace|}}} }}</default>
</data>
<data><label>Died</label>
<default>{{#if: {{{deathdate|}}} | {{{deathdate|}}} }}{{#if: {{{deathplace|}}} | {{#if: {{{deathdate|}}} | <br />}}{{{deathplace|}}} }}</default>
</data>
<data source="gender"><label>Gender</label></data>
<data source="height"><label>Height</label></data>
<data source="occupation"><label>Occupation</label></data>
<data source="appears in"><label>Appears in</label></data>
<data source="portrays"><label>Portrays</label></data>
</infobox>{{Namespace|main=[[Category:Cast]]<!--
-->{{#if: {{#pos:{{{appears in|}}} | TITLE}} | [[Category:TITLE cast]] }}<!--
-->}}</includeonly><noinclude>{{documentation}}</noinclude>
b1e4767be7d53e599ae3ac18e9f41dff90fdfe89
Template:Cast/doc
10
132
263
262
2022-11-10T22:17:58Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Description ==
To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]].
== Syntax ==
<pre>
{{Cast
| name =
| image =
| caption =
| birthname =
| birthdate =
| birthplace =
| deathdate =
| deathplace =
| gender =
| height =
| occupation =
| appears in =
| portrays =
}}
</pre>
== Sample output ==
{{Cast
| name = Test
| image = Wiki.png
| caption = Test
| birthname = Name
| birthdate = Date
| birthplace = Place
| deathdate = Date
| deathplace = Place
| gender = Test
| height = Test
| occupation = Test
| appears in = Test
| portrays = Test
}}
<pre>
{{Cast
| name = Test
| image = Wiki.png
| caption = Test
| birthname = Name
| birthdate = Date
| birthplace = Place
| deathdate = Date
| deathplace = Place
| gender = Test
| height = Test
| occupation = Test
| appears in = Test
| portrays = Test
}}
</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
fea3e74e01ad2f66bb54f921f82426cb1a7fa748
Template:Cite web
10
133
265
264
2022-11-10T22:17:58Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<includeonly>{{
#if: {{#if: {{{url|}}} | {{#if: {{{title|}}} |1}}}}
||Error on call to [[Template:cite web]]: Parameters '''url''' and '''title''' must be specified
}}{{
#if: {{{archiveurl|}}}{{{archivedate|}}}
| {{#if: {{#if: {{{archiveurl|}}}| {{#if: {{{archivedate|}}} |1}}}}
||Error on call to [[template:cite web]]: Parameters '''archiveurl''' and '''archivedate''' must be both specified or both omitted
}}
}}{{#if: {{{author|}}}{{{last|}}}
| {{#if: {{{authorlink|}}}
| [[{{{authorlink}}}|{{#if: {{{last|}}}
| {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }}
| {{{author}}}
}}]]
| {{#if: {{{last|}}}
| {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }}
| {{{author}}}
}}
}}
}}{{#if: {{{author|}}}{{{last|}}}
| {{#if: {{{coauthors|}}}| <nowiki>;</nowiki> {{{coauthors}}} }}
}}{{#if: {{{author|}}}{{{last|}}}|
{{#if: {{{date|}}}
|  ({{{date}}})
| {{#if: {{{year|}}}
| {{#if: {{{month|}}}
|  ({{{month}}} {{{year}}})
|  ({{{year}}})
}}
}}
|}}
}}{{#if: {{{last|}}}{{{author|}}}
| . }}{{
#if: {{{editor|}}}
|  {{{editor}}}:
}}{{#if: {{{archiveurl|}}}
| {{#if: {{{archiveurl|}}} | {{#if: {{{title|}}} | [{{{archiveurl}}} {{{title}}}] }}}}
| {{#if: {{{url|}}} | {{#if: {{{title|}}} | [{{{url}}} {{{title}}}] }}}}
}}{{#if: {{{language|}}} |  <span style="font-size: 0.95em; font-weight: bold; color:#555; position: relative;">({{{language}}})</span>
}}{{#if: {{{format|}}}
|  ({{{format|}}})
}}{{#if: {{{work|}}}
| . ''{{{work}}}''
}}{{#if: {{{pages|}}}
|  {{{pages}}}
}}{{#if: {{{publisher|}}}
| . {{{publisher}}}{{#if: {{{author|}}}{{{last|}}}
|
| {{#if: {{{date|}}}{{{year|}}}{{{month|}}} || }}
}}
}}{{#if: {{{author|}}}{{{last|}}}
||{{#if: {{{date|}}}
|  ({{{date}}})
| {{#if: {{{year|}}}
| {{#if: {{{month|}}}
|  ({{{month}}} {{{year}}})
|  ({{{year}}})
}}
}}
}}
}}.{{#if: {{{archivedate|}}}
|  Archived from [{{{url}}} the original] on {{#time:F j, Y|{{{archivedate}}}}}{{#if: {{{archiveyear|}}} | , {{{archiveyear}}} }}.
}}{{#if: {{{accessdate|}}}
|  Retrieved on {{#time:F j, Y|{{{accessdate}}}}}{{#if: {{{accessyear|}}} | , {{{accessyear}}} }}.
}}{{#if: {{{accessmonthday|}}}
|  Retrieved on {{{accessmonthday}}}, {{{accessyear}}}.
}}{{#if: {{{accessdaymonth|}}}
|  Retrieved on {{{accessdaymonth}}} {{{accessyear}}}.
}}{{#if: {{{quote|}}}
| “{{{quote}}}”
}}</includeonly><noinclude>{{documentation}}
</noinclude>
06085b03744dda1cb654deed7c8e92495d7593a6
Template:Cite web/doc
10
134
267
266
2022-11-10T22:18:00Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
__NOTOC__
This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprecated [[Wikipedia:Template:Teb reference|template:web reference]]. It provides lower case parameters only.
A general discussion of the use of templates for adding citation of open-source web content to Wikipedia articles is available at [[Wikipedia:Citation templates|citation templates]].
This page uses [[w:Wikia:Licensing|Creative Commons Licensed]] content from [[w:c:Wookieepedia:Template:Cite web|Wookieepedia]]
== Usage ==
;Common form for cases where little is known about authorship of the page (with current date)
<tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |format= |work= }}</nowiki></tt>
;Using last, first (with current date)
<tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;Using author (with current date)
<tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;Using non-linked retrieved date, last, first
<tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;Using non-linked retrieved date, author
<tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;All parameters, horizontal format (delete the ones you don't need)
<tt><nowiki>{{Cite web |url= |title= |accessdate= |accessmonthday= |accessdaymonth = |accessyear= |author= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt>
;All parameters, vertical format
<pre>{{Cite web
| url =
| title =
| accessdate =
| accessdaymonth =
| accessmonthday =
| accessyear =
| author =
| last =
| first =
| authorlink =
| coauthors =
| date =
| year =
| month =
| format =
| work =
| publisher =
| pages =
| language =
| archiveurl =
| archivedate =
| quote =
}}</pre>
=== Required parameters ===
* '''url''': URL of online item.
* '''title''': Title of online item.
''For producing a [[Wikipedia:WP:CONTEXT#Dates|wikilinked date]] of retrieval:''
:* '''accessdate''': Full date when item was accessed, in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, for example "accessdate = {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}". ''Must not be wikilinked''
''For producing a non-wikilinked date of retrieval:''
:* '''accessmonthday''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = May 10", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on May 10, 2006.''
:* '''accessdaymonth''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = 10 May", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on 10 May 2006.''
=== Optional parameters ===
* '''author''': Author
** '''last''' works with '''first''' to produce <code>last, first</code>
** '''authorlink''' works either with '''author''' or with '''last''' & '''first''' to link to the appropriate wikipedia article. Does not work with URLs.
** '''coauthors''': allows additional authors
* '''date''': Full date of publication, preferably in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. May be wikilinked.
** OR: '''year''': Year of publication, and '''month''': Name of the month of publication. If you also have the day, use ''date'' instead. Must not be wikilinked.
* '''format''': Format, e.g. PDF. HTML implied if not specified.
* '''work''': If this item is part of a larger work, name of that work.
* '''publisher''': Publisher, if any.
* '''pages''': ''pp. 5–7'': first page and optional last page. This is for listing the pages relevant to the citation, not the total number of pages in the book. This is especially useful for PDF format, where the page can be linked to with the <code>#page=''number''</code> anchor tagged on the end of the URL:
*: <code><nowiki>pages = [http://www.example.org/file.pdf#page=123 p. 123]</nowiki></code>
* '''language''': language of publication (don't specify "English" as this is the default).
* '''archiveurl''': URL of the archive location of the item (requires '''archivedate''')
* '''archivedate''': Date when the item was archived (requires '''archiveurl'''), in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. Must not be wikilinked; it will be linked automatically.
* '''quote''': Relevant quote from online item.
== Examples ==
;Some standard use cases
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| publisher=Open Publishing
| date=2005-04-30
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| date=2005-04-30
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| date=2005-04-30
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06}}</span>
* <nowiki>{{Cite web
| author=Doe, John
| title=My Favorite Things Part II
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span>
* <nowiki>{{Cite web
| title=My Favorite Things Part II
| url=http://www.example.org/
| accessdate=2005-07-06
}}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span>
* <nowiki>{{Cite web
| url=http://www.nfl.com/fans/
| title=Digest of Rules
| publisher= National Football League
| accessdate=2005-07-06
}}</nowiki><br>→ <span style="background:white">{{cite web | url=http://www.nfl.com/fans/
| title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</span>
;Non-linking date of retrieval (using accessmonthday and accessyear)
* <nowiki>{{Cite web
| title=My Favorite Things Part II
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessmonthday=July 6
| accessyear=2005
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=My Favorite Things Part II
| work=Encyclopedia of Things
| url=http://www.example.org/
| accessmonthday=July 6
| accessyear=2005
}}</span>
;Using format
* <nowiki>{{Cite web
| title=List of psychotropic substances under international control
| publisher = International Narcotics Control Board
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=List of psychotropic substances under international control
| publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF | accessdate=2005-07-06}}</span>
;language
* <nowiki>{{Cite web
| author=Joliet, François
| title=Honnit soit qui mal y pense
| date=2005-04-30
| url=http://www.example.org/
| accessdate=2005-07-06
| language=French
}}</nowiki><br/>→ <span style="background:white">{{cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06 | language=French}}</span>
;coauthors
* <nowiki>{{Cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16
}}</nowiki><br/>→ <span style="background:white">{{cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span>
;No author
* <nowiki>{{Cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16
}}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span>
;No author, no publisher
* <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06
}}</nowiki></br>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</span>
* <nowiki>{{Cite web
| title=List of psychotropic substances under international control
| date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
| language=Greek
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=List of psychotropic substances under international control | date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06
| language=Greek }}</span>
; Using archiveurl and archivedate to refer to items that went away but are available from an archive site
* <nowiki>{{Cite web
| title=List of psychotropic substances under international control
| date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
| archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf
| archivedate=2005-09-11
}}</nowiki><br/> → <span style="background:white">{{cite web
| title=List of psychotropic substances under international control
| date=2005-04-30
| url=http://www.incb.org/pdf/e/list/green.pdf
| format = PDF
| accessdate=2005-07-06
| archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf
| archivedate=2005-09-11 }}</span>
* <nowiki>
{{Cite web
|url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm
|title=Interview with Maggie Downs
|date=2006-03-31
|publisher=The Desert Sun
|archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm
|archivedate=2006-04-26
}}</nowiki><br/> → <span style="background:white">{{cite web
|url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm
|title=Interview with Maggie Downs
|date=2006-03-31
|publisher=The Desert Sun
|archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm
|archivedate=2006-04-26}}</span>
; Using quote
* <nowiki>{{Cite web
| title = My Favorite Things Part II
| work = Encyclopedia of Things
| url = http://www.example.org/
| accessdate = 2005-07-06
| quote = Lorem ipsum dolor.
}}</nowiki><br/>→ <span style="background:white">{{cite web
| title = My Favorite Things Part II
| work = Encyclopedia of Things
| url = http://www.example.org/
| accessdate = 2005-07-06
| quote = Lorem ipsum dolor.
}}</span>
;No parameters (error)
* <nowiki>{{Cite web}}</nowiki><br/>→ <span style="background:white">{{cite web}}</span>
<includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude>
49566b6a3601a57e7e4d3521179ec7d3300ec2a1
VAST SPACE ARCHIVES: Beeleth Wiki:Wiki rules
4
135
269
268
2022-11-10T22:18:00Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
Below is a suggested set of rules to follow when editing this wiki. Administrators of this wiki should read these rules and adapt them as necessary.
# '''Keep it civil''': Do not make personal attacks on other people. If you need to criticize another user’s argument, do so without attacking them as a person. Do not use bigoted language, including slurs which degrade another person or group of people based on gender, race, sexual orientation, nationality, religion, etc.
# '''Be a productive member of the wiki''': Contribute to the wiki in line with the established processes and conventions. Need help? Ask an [[Special:ListUsers/sysop|administrator]]! Disrupting the wiki with “edit warring” over differing opinions of a topic with another user or group of users is not productive.
# '''Do not engage in excessive self-promotion''': The wiki is a collaborative community resource for the topic at hand. It is NOT a free place to advertise your related website, YouTube channel, blog, social media account, etc. Have a question about whether your link would be welcome? Ask an administrator!
# '''Do not harass other users''': If somebody asks you to stop posting certain content on their wall, respect their wishes. It is their wall.
# '''Do follow community guidelines for formatting''': When a community has established formatting, it’s important to adhere to that, especially when spoiler content is involved.
[[Category:{{SITENAME}}]]
efad0088b04516c5e666314530cc43875a74fd71
Blog:Recent posts
0
136
271
270
2022-11-10T22:18:01Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<bloglist summary="true" count=50><title>⧼create-blog-post-recent-listing-title ⧽</title><type>plain</type><order>date</order></bloglist>
afb902f1d8c2d7adccbdd48b1fbd4a0cc5361783
Category:Blog posts
14
137
273
272
2022-11-10T22:18:01Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
This is an automatically generated list of blog posts
[[Category:Community]]
864f70c2af84fd84c1901d154b90eb4facc9f37c
Category:Community
14
138
275
274
2022-11-10T22:18:02Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:{{SITENAME}}]]
dd8aaa34cf600c1567d240a3f4bc615164a11592
Category:Pages with broken file links
14
139
277
276
2022-11-10T22:18:02Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Maintenance]]
a106a39e26c77e7b2ec90cb83728a6446cb6a1a1
Category:Videos
14
140
279
278
2022-11-10T22:18:02Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Media]]
b141d2b9971d6efe9f59bd03449781e71411c631
Category:Screenshots
14
141
281
280
2022-11-10T22:18:03Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Images]]
8820b63e35aedd9d2666fe40b965d4e91ce0a106
Category:Wiki skin images
14
142
283
282
2022-11-10T22:18:03Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
[[Category:Images]]
8820b63e35aedd9d2666fe40b965d4e91ce0a106
MediaWiki:Mainpage
8
143
285
284
2022-11-10T22:18:03Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
BEELETH Wiki
788e216c683159d2e7fb2731fdbe1c0517dc9321
Main Page
0
1
287
1
2022-11-10T22:18:04Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phab:|Phabricator]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
21236ac3f8d65e5563b6da6b70815ca6bf1e6616
File:Site-background-dark
6
144
289
288
2022-11-10T22:18:04Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Site-background-light
6
145
291
290
2022-11-10T22:18:05Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Site-logo.png
6
146
293
292
2022-11-10T22:18:06Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Site-favicon.ico
6
147
295
294
2022-11-10T22:18:06Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:General Character
10
148
297
296
2022-11-10T22:18:07Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<infobox>
<title source="title1"/>
<image source="image1">
<caption source="caption1"/>
</image>
<data source="real_name">
<label>Real name</label>
</data>
<data source="nickname(s)">
<label>Nickname(s)</label>
</data>
<data source="species">
<label>Species</label>
</data>
<data source="gender">
<label>Gender and pronouns</label>
</data>
<data source="orientation">
<label>Orientation</label>
</data>
<group collapse="open">
<header>Meta</header>
<data source="creation_date">
<label>Creation date</label>
</data>
<data source="voice_claim">
<label>Voice(s)</label>
</data>
<data source="theme_song">
<label>Theme</label>
</data>
</group>
<group collapse="open">
<header>In-Universe</header>
<data source="universe">
<label>Universe</label>
</data>
<data source="classification">
<label>Classification</label>
</data>
<data source="birth">
<label>Birth</label>
</data>
<data source="residence">
<label>Residence</label>
</data>
<data source="relationships">
<label>Relationships</label>
</data>
<data source="title">
<label>Title</label>
</data>
<data source="rank">
<label>Rank</label>
</data>
<data source="sector">
<label>Sector</label>
</data>
<data source="affiliation">
<label>Affiliation</label>
</data>
</group>
<group collapse="closed">
<header>Potential Spoilers</header>
<data source="death">
<label>Death</label>
</data>
<data source="cause_of_death">
<label>Cause of death</label>
</data>
<data source="trace">
<label>Trace(s)</label>
</data>
<data source="wish">
<label>Wish</label>
</data>
<data source="kills">
<label>Kills</label>
</data>
</group>
</infobox>
<noinclude>
Example usage:
<pre>
{{General Character
| title1=Example
| image1=Example
| caption1=Example
| real_name=Example
| nickname(s)=Example
| species=Example
| gender=Example
| orientation=Example
| creation_date=Example
| voice_claim=Example
| theme_song=Example
| universe=Example
| classification=Example
| birth=Example
| residence=Example
| relationships=Example
| title=Example
| rank=Example
| sector=Example
| affiliation=Example
| death=Example
| cause_of_death=Example
| trace=Example
| wish=Example
| kills=Example
}}
</pre>
<templatedata>
{"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"real_name":{"suggested":true},"nickname(s)":{"suggested":true},"species":{"suggested":true},"gender":{"suggested":true},"orientation":{"suggested":true},"creation_date":{"suggested":true},"voice_claim":{"suggested":true},"theme_song":{"suggested":true},"universe":{"suggested":true},"classification":{"suggested":true},"birth":{"suggested":true},"residence":{"suggested":true},"relationships":{"suggested":true},"title":{"suggested":true},"rank":{"suggested":true},"sector":{"suggested":true},"affiliation":{"suggested":true},"death":{"suggested":true},"cause_of_death":{"suggested":true},"trace":{"suggested":true},"wish":{"suggested":true},"kills":{"suggested":true}},"sets":[],"maps":{}}
</templatedata>
</noinclude>
c1f275f04c540ee81c0c5638b5499bca4aa071ad
BEELETH
0
149
299
298
2022-11-10T22:18:07Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{RealPerson}}{{General Character|caption1=Photo taken in 2021|birth=June 23|affiliation=|voice_claim=[https://www.youtube.com/watch?v=lpRbjrBKvME BEELETH]|nickname(s)=Beel<br> Euclid|gender=Epicene<br>
* they/them
* he/him
* that one/that one's
* no pronouns|title1=BEELETH|title=|species=Human (Filipino-American)|residence=United States|universe=Real World|image1=[[File:RealBEELETH.jpg|alt=Photograph of BEELETH]]|orientation=Unspecified|real_name=Ultimate Awesome Epic Guy 3: Deluxe Edition|relationships=* [https://coolpeoplw.fandom.com/wiki/Cam Cam] (partner)
* [https://coolpeoplw.fandom.com/wiki/Rick Rick] (best friend)
* [https://coolpeoplw.fandom.com/wiki/Chee Chee] (best friend)
* [https://coolpeoplw.fandom.com/wiki/Izzy Izzy] (best friend)}}
''Not to be confused with [[King Beeleth]] from [[Pride of the Peacock Angel]].''
BEELETH is the real-world creator of the character universe detailed in this Wiki as well as the [[BEELETH Wiki]] itself. They are the main editor, but they're fine with others helping too.
They have represented themselves (or at least certain aspects of themselves) through their work as various characters, including but not limited to [[Moss]] and [[King Beeleth]]. Almost all of their other characters also reflect something about them, their personality, their thoughts, and their experiences.
== Inspiration ==
When creating new content, BEELETH takes inspiration from a variety of things, which includes childhood games, shows, and events. They may also take inspiration from current interests as well.
Some of the inspirations that are most noticeable are Pokémon, Sonic the Hedgehog, and Klonoa. There are many other clear influences visible in different characters and their universes, but not frequent enough to be listed here.
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
[[Category:Real]]
9fd9a5393948fa30b90d91f6b839fd90216c8e78
File:RealBEELETH.jpg
6
150
301
300
2022-11-10T22:18:08Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Summary ==
REAL?????
== Licensing ==
{{Self}}
9a923cc36699a221e4f3d827d811d18c0d13ba52
File:Mephistopheles.png
6
151
303
302
2022-11-10T22:18:09Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Summary ==
Mephistopheles' pose.
== Licensing ==
{{Self}}
5478da25c043ac3e9f6284da73e6d5473627463f
File:Beeleth.png
6
152
305
304
2022-11-10T22:18:09Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
== Summary ==
Beeleth's pose.
== Licensing ==
{{Self}}
1dfbad80f58f8978af6540f16a2c0db8cfe711c8
King Beeleth
0
153
307
306
2022-11-10T22:18:11Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{General_Character|title1=King Beeleth|real_name=Beeleth<br> Cuperosa the Star-Crossed (formerly)|nickname(s)=Beel<br> Byleth<br> Beleth<br> Bileth|voice_claim=[https://youtu.be/4x40W0Pu3Fc Cecilia姉貴兄貴]|universe=[[Pride of the Peacock Angel]]|title=Hellish King of Love|affiliation=[[Lucifer's Rebellion]]|sector=Felis Sector|orientation=Panromantic asexual|kills=[[Galatea]]|image1=<gallery>
Beelethv2wings.png|V2
Beelethv1wings.png|V1
Beelethmaidwings.png|Maid
Beelethcasualwings.png|Casual
</gallery>|caption1=Design as of 2021|theme_song=[https://youtu.be/LctLOhm2CqU john - 宴]|classification=|birth=First Angel Wave|species=[[Abstract angel|Cherub]] (formerly)<br> [[Abstract demon|Fallen cherub]]|gender=Unspecified<br> <small>• he/him<br> • they/them</small>|residence=[[Heaven]] (formerly)<br> [[Hell]]|relationships=[[Galatea]] (lover)<br> [[Emperor Satan]] (leader)<br> [[Prince Sytri]] (like a son)<br>}}
''Not to be confused with [[BEELETH]], King Beeleth's real-world creator.''
{{Quote|quote=Please... leave me alone.|speaker=Beeleth}}
'''King Beeleth''' is one of several Hellish Kings designated by [[Satan]] himself, and he resides over the Felis sector in [[Hell]] along with his subordinates. Much like [[King Bael]], he is known for being miserable; however, he is also known to be cruel but pacifist, which is a strange combination. He is often in hiding to avoid speaking to others. In the list of all [[Pride of the Peacock Angel]] demons, he is the 13<sup>th</sup> total.
Prior to [[Lucifer's Rebellion]] in [[Heaven]], he was known as Cuperosa the Star-Crossed and was somewhat kinder because his lover, [[Galatea]], was still alive; however, he was overly possessive of her and was often aggressive to others because of his fear of losing her.
== Story ==
[[File:Cuperosa.png|alt=Cuperosa|left|250x250px|Cuperosa]]
=== Heaven ===
Cuperosa was created by [[Kyrie]] during the first wave of angels to represent and protect the very concept of true love. However, he was largely inactive during this period because he did not have anyone to truly love himself; as well as this, most other angels weren't interested in romance among themselves. One of the only other angels he would talk to about such things was [[Lucifer the Morning Star]], who had one-sided but intense feelings towards Kyrie that he could not discuss with others.
He was also given a sentient [[Unicorns|divine steed]], [[Duke Amdusias|Amalthyne the Faithful]], which was to always obey him. The two of them were quite friendly and formed a significant trust between one another. One of the only other angels he would speak to was [[Queen Paimonia|Azazel the Watcher]], who provided infinite wisdom to their fellow angels and was comforting to be around.
During the Second Angel Wave, many more angels of different types were created for different purposes. Among these angels was the archangel Galatea, who was (not known to those other than Kyrie) created to help serve and guide the creations yet to come. Beeleth fell for her instantly and would never leave her alone, but she found his company quite enjoyable and they quite quickly became partners.
=== Unrest and Rebellion ===
When the first [[humans]] were created from Earth's soil, most angels were happy and in awe of Kyrie's power. Others responded in secret with confusion and fear that they wouldn't be loved by Kyrie once more humans were created. These angels would join forces with Lucifer to form a [[Lucifer's Rebellion|rebellion]] against their creator in order to be the only creations remaining in His focus.
Beeleth was not heavily involved in pre-war plans, and actually didn't anticipate the rebellion to become a full-on war at all. However, there was some tension between he and Galatea because of their differing opinions over the creation of humans and the future of the divine; he believed they were at risk of losing Kyrie's care, but she believed that they would all be loved equally in the end. Despite this, she promised to not let anyone dangerous find out about the rebellion's plans.
==== Death of Galatea ====
agagag
=== Fall from Heaven ===
sgsgs
=== fafafa ===
epic
== Personality ==
stuff is here
== Abilities ==
# '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks Cacophonic, which is the language of demons. As well as that, he is able to understand all other mortal languages and respond in them even if he doesn't recognize he is speaking in it. As for reading, it depends on the language.
# '''Communicating to cats:''' Since he is a cat demon, he can understand and communicate with them. He and Sytri understand each other more than they are aware, which makes it hard for them to hide things.
#* Some of his senses are also heightened. He can see better in the dark, smell more things, hear better, and sense things. However, he has a slightly worse sense of taste than normal demons.
# Reshaping energy: wip i dont feel like writing rn
# '''Retracting/moving horns, ears, wings, and tail:''' He is capable of retracting and changing the placement of some of his limbs, but rarely does it because he thinks it's silly and generally useless. This is connected to his shapeshifting ability in that if he doesn't pay enough attention, he will return to normal or regain some of his regular physical traits.
# '''Psychokinesis on mortals and normal objects:''' If they are within his range, he can physically influence the things and people around him as long as they are mortals or objects without any special qualities that would prevent him from doing so.
# '''Shapeshifting:''' Beeleth is able to switch between his normal form, a human form, and a cat form as he pleases. However, he does not like being belittled by others, so he often remains in his regular form.
#* As a human, he goes by the name _.
#* As a cat, he goes by the name _.
# '''Entering blind rage:''' If he sees, experiences, or vividly remembers violence, he will enter a period of blind and violent rage that brings him physical pain and increases his physical and demonic strength exponentially. He will change out of any non-demonic form that he is currently in whenever he enters his rage state.
#* In order to exit his rage state, he must calm down and/or run out of energy. It takes him a much longer time than his regular state to run out of energy completely, so depending on the situation, it might be easier to calm him down. However, it may be hard to calm him down during his rage state.
# '''Altering personal bonds:''' He can change the way people feel about each other, which includes friendship, love, and many other types of feelings. He cannot use these powers on himself, deities, or other demons of rank. He is capable of combining this power with his energy-reshaping ability, which allows him to use energy projectiles as vessels for his bonding ability; this also works on regular weapons and projectiles.
== Relationships ==
=== Satan ===
Although they were once close, they have become more distant partially due to the rebellion's failure as well as Satan's physical condition following the fall from Heaven.
=== Kyrie ===
Beeleth views Kyrie as cruel.
=== Amdusias ===
Beeleth has become annoyed at Amdusias because of his current behavior and intentionally annoying nature.
=== Sytri ===
Beeleth cares for Sytri in an almost fatherly way, but is afraid to admit it because he worries that he will hurt the ones he loves.
=== Galatea ===
He feels immense guilt over the death of Galatea because he never thought that they would one day be apart, especially at his own hand. He still has periods of obsessive remorse related to the incident, and will lock himself away during them due to the intense feelings of violence and pain he gets during them.
== Gallery ==
<gallery>
File:Beelref.png|2021 reference sheet
File:Beeleth.png|Full-body transparent image from 2021 reference sheet
File:Beelcool.png|In combat using his energy reshaping ability
</gallery>
== Trivia ==
* Beeleth was originally made as BEELETH's booksona sometime before 2018 and was heavily inspired by Beleth from Floraverse, but was changed over time to be more personal and distinct.
** He is named Beeleth rather than Beleth solely because of Bee Movie jokes.
* Cuperosa was designed to have his wings resemble broken hearts, and Beeleth's horns are meant to resemble a heart if his left horn is not broken.
* His 2021 incarnation is based on his 2020 incarnation.
** That incarnation was based on the secondary form of his 2018-2019 incarnation.
* He does not have a canon gender, but has canon pronouns.
== Related Pages ==
* [[King]], his alternate incarnation in Art Portfolio Art Academy
[[Category:Pride of the Peacock Angel]]
[[Category:Characters]]
[[Category:LGBT+ Characters]]
[[Category:Neurodivergent Characters]]
[[Category:Fallen Angels]]
[[Category:Abstract Demons]]
[[Category:Iconic Characters]]
[[Category:Shapeshifters]]
57c5fe738d44c42382bde0bbc51b1feb86ceecb4
Lucifer the Morning Star
0
154
309
308
2022-11-10T22:18:11Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
#REDIRECT [[Emperor Satan]]
6be8eff933204ba1a16a150b699f234f34125df0
Satan
0
155
311
310
2022-11-10T22:18:11Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
#REDIRECT [[Emperor Satan]]
6be8eff933204ba1a16a150b699f234f34125df0
Emperor Satan
0
156
313
312
2022-11-10T22:18:12Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{General_Character|gender=Cisgender<br> <small>• he/him</small>|birth=First Angel Wave|real_name=Satan<br> Lucifer the Morning Star (formerly)|title1=Emperor Satan|species=Fallen seraph|theme_song=[https://www.youtube.com/watch?v=hPMnIymc3Cs Lemon Demon - Spiral of Ants]|caption1=Design as of 2021|orientation=Gay|universe=[[Pride of the Peacock Angel]]|residence=[[Lemegeton]]|title=Hellish Emperor of Fallen Stars|sector=Raven Sector|image1=[[Satan.png]]|affiliation=[[Lucifer's Rebellion]]|voice_claim=[https://www.youtube.com/watch?v=ETEg-SB01QY Andrew VanWyngarden]|nickname(s)=Luci<br> Fern<br> The Devil<br>|relationships=[[Kyrie]] <small>(crush)</small><br>[[Great Prince Mephistopheles|Mephistopheles]] <small>(spawn)</small><br>[[Great Prince Pruflas|Pruflas]] <small>(spawn)</small><br>[[Great Prince Beelzebub|Beelzebub]] <small>(spawn)</small>}}''Not to be confused with [[Great Prince Beelzebub]].''
Emperor Satan is the ruler of the entirety of [[Hell]], residing in the Raven sector which contains the capital, [[Lemegeton]]. His only subordinates who he actively works with as Hellish Emperor are the three Great Princes: [[Great Prince Beelzebub|Beelzebub]], [[Great Prince Pruflas|Pruflas]], and [[Great Prince Mephistopheles|Mephistopheles]].
He was formerly known as Lucifer the Morning Star, the brightest star in [[Heaven]] under [[Kyrie]] until he was banished and turned into a fallen [[Abstract angels|angel]] following a [[Lucifer's Rebellion|rebellion]] he led. He has strong one-sided feelings towards Kyrie.
== Story ==
=== Heaven ===
a
=== Unrest and Rebellion ===
a
=== Fall from Heaven ===
a
== Personality ==
a
== Abilities ==
# '''Speaking Cacophonic and other languages:''' Since he is a fallen angel, he naturally speaks [[Cacophonic]], which is the language of demons. As well as that, he is able to understand all other [[Mortals|mortal]] languages and respond in them even if he doesn't recognize he is speaking in it.
#* Like [[Duchess Astaroeth]], he is able to read and write all languages as long as it was not written directly by a divine being.
# '''Communicating to animals:''' He can understand and communicate with all animals. He is most like a goat, so he understands goats the best and vice versa. His second best "animal language" is that of snakes.
# '''Flight and levitation:''' Satan is able to fly and levitate. He does not need his wings to levitate, but they help him fly and glide. Flight takes more energy than levitation, so he avoids doing it whenever possible; however, it is faster than most other means of transportation he can provide himself.
# '''Using minimal teleportation:''' By thinking about a nearby location, he can reach it near-instantly as long as he can fit himself there. He can chain teleportation to go further than he would with just one attempt.
# '''Melting and shapeshifting:''' He is naturally always fluid-like, as he is composed mostly of Abstract substance. He can become more liquid at will and, along with that, change his shape easily. He is completely reshapable, and if this power is combined with his ability to manipulate light, he can appear exactly as he pleases at any time. He can compress or expand himself to appear smaller or larger respectively, but he cannot become too large or else he will be weaker.
# Harvesting souls:
# '''Mimicking:''' He can mimic sounds, music, and voices as long as he is familiar with how they sound. He can do so with things he hasn't heard personally before if he has access to memories of it.
# Manipulating sound:
# '''Manipulating light:''' Since Abstract angels are personified stars and he is what remains of one, he can manipulate light and create illusions. The blue and white parts of his body are made of light, so he can change them as he wishes.
#* He can completely and utterly disregard physics and turn light into weapons, tools, or whatever else he pleases. He often uses his halo for this.
# Summoning/creating demons and familiars:
# '''Using advanced psychokinesis:''' He can manipulate objects, people, and certain elements (see 14-17 for more information) easily by gesturing or thinking about it. His range is much larger than a regular psychokinetic demon, and encompasses the entirety of Hell and even further beyond it. In order to affect something, he must be aware of it; he does not need to know its current whereabouts to do so. He can affect the inside and outside of whatever he is manipulating. He has no actual limit on how many things he can affect at once.
#* If he really wishes, he can use his powers to shred apart the internal organs of the entire population of a large city and kill them all, and there would be no way to know it was him. However, there are better things to do than that, and he knows it.
# '''Using advanced possession:''' He is capable of possessing most if not all vessels, even if they are already being controlled by someone else (including natural bodies). Most of the time, unless he makes a mental or physical disruption, it's often impossible to tell someone has been possessed by him, even to the controller of the vessel. It's possible for him to sit in the "background" or take over the body completely.
#* Though he was initially forced out of his body and into a noncorporeal form from the impact of the fall, his body and soul are somewhat conjoined nowadays in a sense. If he is removed from a body he is possessing by force and it is not his own, he will likely appear physically rather than spiritually.
#* Astaroeth created a vessel, [[Zenko]], mainly for Satan's use but also for any demons who aren't capable of advanced possession, as Zenko's soul is incomplete and seeks certain types of souls to complete it.
# '''Using advanced telepathy:''' By focusing on a person or group of people, he is able to infiltrate their mind and access most if not all of their thoughts and memories; he can also plant his own thoughts and memories within the front of their mind or the deepest recesses of it. Along with this, he can erase thoughts and memories. He is also able to create one-way or two-way communication channels carried by thoughts.
#* He is immune to most other telepathy unless it is being carried out via a particularly powerful telepath or just someone/something more powerful than him in general.
#* He is able to use these powers for hypnosis and brainwashing purposes, and it is much, much easier than doing so without powers.
# Using cryomancy:
# Using aquamancy:
# Using geomancy:
# Using pyromancy:
# '''Entering homeostasis:''' Though it can be considered a weakness, Satan can enter homeostasis if he is overwhelmed or needs to recharge/retain energy. While in this state, he often creates a near-impenetrable highly compressed shield of Abstract susbstance around himself and allows his light to freely shape itself within the shield. If he enters this state out of his free will, he is likely able to exit it as he wishes; if he is forced to take this state, he will remain in it until his body is recharged.
#* It's nearly impossible to force him out of homeostasis unless he wishes for it.
#* Upon the impact of his fall from heaven, he entered a homeostasis-like state, albeit without his soul intact. The only difference is that he was unable to retain his ice powers and he slowly froze the crater he created. He remained like this for several hundreds of years.
== Relationships ==
=== Kyrie ===
abfasjkhjgabbgnjsk
=== Great Princes ===
The Great Princes are considered to be Satan's sons, but they are technically unrelated aside from being created as a result of his emotions reacting to Abstract substance at the time of his impact on Earth. His view of each of the princes varies, since they're based on different aspects of him and remind him of different people.
==== Mephistopheles ====
agoashgau
==== Pruflas ====
ashguofassafisanfas
==== Beelzebub ====
aiugsbohisnafaijfns
=== Underlings ===
Since he is the ruler of the entirety of Hell and oversees most legal activity within it, he has met most demons since those who have a position of any sort work for him. He has known most of the highest-ranking demons for the longest, as many of them were once angels like he was.
== Trivia ==
* Following King Beeleth, he was the second Pride of the Peacock Angel character ever created. They initially had a more personal relationship, with Beeleth being one of his direct subordinates rather than governing another circle of Hell away from him.
*His first design was more visually ice-related and didn't have Abstract substance because it didn't exist at the time of his actual creation.
== Related Pages ==
* [[Lucifer's Rebellion]], a major historical/plot event in [[Pride of the Peacock Angel]]
*[[Lemegeton]], the capital of Hell
[[Category:Pride of the Peacock Angel]]
[[Category:Characters]]
[[Category:LGBT+ Characters]]
[[Category:Neurodivergent Characters]]
[[Category:Fallen Angels]]
[[Category:Abstract Demons]]
[[Category:Shapeshifters]]
[[Category:Iconic Characters]]
90b553a3a03778b3575704422e67d47bac323770
Lucifer
0
157
315
314
2022-11-10T22:18:12Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
#REDIRECT [[Emperor Satan]]
6be8eff933204ba1a16a150b699f234f34125df0
Hell
0
158
317
316
2022-11-10T22:18:12Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
{{General Location|title1=Hell|universe=[[Pride of the Peacock Angel]]|location=[[Earth_(PotPA)|Earth]]|capital=Lemegeton|founder=[[Emperor Satan]]|leader=[[Emperor Satan]]|creation=Post-Rebellion|population=Undefined|notable_people=[[Emperor Satan]]}}
Hell is the place that was created directly as a result of [[Lucifer's Rebellion]] falling from [[Heaven]], and it was originally a large crater caused by the impact of [[Emperor Satan|Satan]]'s fall. It was later turned into an entire city split into sectors ruled by kings and queens under Satan's rule.
== Lemegeton ==
hello
[[Category:Location]]
[[Category:Abstract Space]]
[[Category:Pride of the Peacock Angel]]
c389d026ba84809649976e3df1fc3f73453ea702
Template:General Location
10
159
319
318
2022-11-10T22:18:13Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
<infobox>
<title source="title1"/>
<image source="image1">
<caption source="caption1"/>
</image>
<data source="universe">
<label>Universe</label>
</data>
<data source="location">
<label>Location</label>
</data>
<data source="capital">
<label>Capital</label>
</data>
<data source="sector">
<label>Sector</label>
</data>
<group>
<header>In-Universe</header>
<data source="founder">
<label>Founder</label>
</data>
<data source="leader">
<label>Leader</label>
</data>
<data source="creation">
<label>Creation</label>
</data>
<data source="population">
<label>Population</label>
</data>
<data source="notable_people">
<label>Notable People</label>
</data>
</group>
</infobox>
<noinclude>
Example usage:
<pre>
{{General Location
| title1=Example
| image1=Example
| caption1=Example
| universe=Example
| location=Example
| capital=Example
| sector=Example
| founder=Example
| leader=Example
| creation=Example
| population=Example
| notable_people=Example
}}
</pre>
<templatedata>
{"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"universe":{"suggested":true},"location":{"suggested":true},"capital":{"suggested":true},"sector":{"suggested":true},"founder":{"suggested":true},"leader":{"suggested":true},"creation":{"suggested":true},"population":{"suggested":true},"notable_people":{"suggested":true}},"sets":[],"maps":{}}
</templatedata>
</noinclude>
89aa34d77ed89da199f5ef3dc305d38ed3c7f064
Cuperosa the Star-Crossed
0
160
321
320
2022-11-10T22:18:13Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
#REDIRECT [[King Beeleth]]
9bfa365dd4a5e6fe3d7ed91e668364015e9141e2
Cuperosa
0
161
323
322
2022-11-10T22:18:14Z
BEELETH
2
1 revision imported: Import from Fandom
wikitext
text/x-wiki
#REDIRECT [[King Beeleth]]
9bfa365dd4a5e6fe3d7ed91e668364015e9141e2
Module:Transclusion count
828
223
445
2022-11-11T07:41:32Z
beeleth>Aidan9382
0
Remove any Template: namespace designation from the demo arg
Scribunto
text/plain
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
local namespace = mw.title.getCurrentTitle().namespace
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","")
elseif namespace == 10 then -- Template namespace
template = mw.title.getCurrentTitle().text
elseif namespace == 828 then -- Module namespace
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
end
-- If in template or module namespace, look up count in /data
if template ~= nil then
namespace = mw.title.new(template, "Template").namespace
if namespace == 10 or namespace == 828 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end
local index = mw.ustring.sub(mw.title.new(template).text,1,1)
local status, data = pcall(function ()
return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")))
end)
if status then
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
end
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
if arg1 and arg1 ~= '' then
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
end
return return_value
end
-- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate(frame)
local list = {}
for i = 65, 91 do
local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i)))
for name, count in pairs(data) do
table.insert(list, {mw.title.new(name, "Template").fullText, count})
end
end
table.sort(list, function(a, b)
return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2])
end)
local lang = mw.getContentLanguage();
for i = 1, #list do
list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2]))
end
return table.concat(list)
end
return p
000ef6bcbf7b66e727870b0c300c4009da300513
Template:Plainlist/styles.css
10
243
485
2022-12-11T06:59:53Z
beeleth>Izno
0
add this reset from mobile.css
text
text/plain
/* {{pp-template|small=yes}} */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
padding: 0; /* Reset Minerva default */
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
51706efa229ff8794c0d94f260a208e7c5e6ec30
Template:Hlist/styles.css
10
233
465
2022-12-26T18:00:17Z
beeleth>Izno
0
actually remove that block, someone can dig for authorship
text
text/plain
/* {{pp-protected|reason=match parent|small=yes}} */
/*
* hlist styles are defined in core and Minerva and differ in Minerva. The
* current definitions here (2023-01-01) are sufficient to override Minerva
* without use of the hlist-separated class. The most problematic styles were
* related to margin, padding, and the bullet. Check files listed at
* [[MediaWiki talk:Common.css/to do#hlist-separated]]
*/
/*
* TODO: When the majority of readership supports it (or some beautiful world
* in which grade C support is above the minimum threshold), use :is()
*/
.hlist dl,
.hlist ol,
.hlist ul {
margin: 0;
padding: 0;
}
/* Display list items inline */
.hlist dd,
.hlist dt,
.hlist li {
/*
* don't trust the note that says margin doesn't work with inline
* removing margin: 0 makes dds have margins again
* We also want to reset margin-right in Minerva
*/
margin: 0;
display: inline;
}
/* Display requested top-level lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
/* Display nested lists inline */
.hlist dl dl,
.hlist dl ol,
.hlist dl ul,
.hlist ol dl,
.hlist ol ol,
.hlist ol ul,
.hlist ul dl,
.hlist ul ol,
.hlist ul ul {
display: inline;
}
/* Hide empty list items */
.hlist .mw-empty-li {
display: none;
}
/* TODO: :not() can maybe be used here to remove the later rule. naive test
* seems to work. more testing needed. like so:
*.hlist dt:not(:last-child)::after {
* content: ": ";
*}
*.hlist dd:not(:last-child)::after,
*.hlist li:not(:last-child)::after {
* content: " · ";
* font-weight: bold;
*}
*/
/* Generate interpuncts */
.hlist dt::after {
content: ": ";
}
.hlist dd::after,
.hlist li::after {
content: " · ";
font-weight: bold;
}
.hlist dd:last-child::after,
.hlist dt:last-child::after,
.hlist li:last-child::after {
content: none;
}
/* Add parentheses around nested lists */
.hlist dd dd:first-child::before,
.hlist dd dt:first-child::before,
.hlist dd li:first-child::before,
.hlist dt dd:first-child::before,
.hlist dt dt:first-child::before,
.hlist dt li:first-child::before,
.hlist li dd:first-child::before,
.hlist li dt:first-child::before,
.hlist li li:first-child::before {
content: " (";
font-weight: normal;
}
.hlist dd dd:last-child::after,
.hlist dd dt:last-child::after,
.hlist dd li:last-child::after,
.hlist dt dd:last-child::after,
.hlist dt dt:last-child::after,
.hlist dt li:last-child::after,
.hlist li dd:last-child::after,
.hlist li dt:last-child::after,
.hlist li li:last-child::after {
content: ")";
font-weight: normal;
}
/* Put ordinals in front of ordered list items */
.hlist ol {
counter-reset: listitem;
}
.hlist ol > li {
counter-increment: listitem;
}
.hlist ol > li::before {
content: " " counter(listitem) "\a0";
}
.hlist dd ol > li:first-child::before,
.hlist dt ol > li:first-child::before,
.hlist li ol > li:first-child::before {
content: " (" counter(listitem) "\a0";
}
8c9dd9c9c00f30eead17fe10f51d183333e81f33
Module:Infobox
828
170
333
2022-12-27T21:29:12Z
beeleth>Izno
0
merge hlist here
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
0ddb7e5c8426d67cd589b710efb9912ddfb67fea
Module:Infobox/doc
828
242
483
2022-12-27T21:30:05Z
beeleth>Izno
0
and now hlist
wikitext
text/x-wiki
{{High-use|3308957|all-pages = yes}}
{{module rating|protected}}
{{Lua|Module:Navbar}}
{{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}}
'''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions.
== Tracking categories ==
* {{clc|Pages using infobox templates with ignored data cells}}
* {{clc|Articles using infobox templates with no data rows}}
* {{clc|Pages using embedded infobox templates with the title parameter}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
[[Category:Modules that add a tracking category]]
[[Category:Wikipedia infoboxes]]
[[Category:Infobox modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
5381394a0c0d893c8387fa699e9e185a298bd831
Module:List
828
184
361
2022-12-29T17:57:56Z
beeleth>Izno
0
add templatestyles for hlist
Scribunto
text/plain
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes and TemplateStyles
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for _, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for _, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for _, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
7a4f36a6e9cd56370bdd8207d23694124821dc1a
362
361
2023-01-16T18:15:30Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes and TemplateStyles
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for _, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for _, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for _, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
7a4f36a6e9cd56370bdd8207d23694124821dc1a
Module:Sidebar
828
204
405
2022-12-29T18:01:03Z
beeleth>Izno
0
add templatestyles for hlist
Scribunto
text/plain
require('strict')
local cfg = mw.loadData('Module:Sidebar/configuration')
local p = {}
local getArgs = require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
local function categorizeTemplatesWithInlineStyles(args)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 and title.namespace ~= 828 then return '' end
for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do
if title.text:match(pattern) then return '' end
end
for key, _ in pairs(args) do
if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then
return cfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
local function trimAndAddAutomaticNewline(s)
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
local function hasSubgroup(s)
if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then
return true
else
return false
end
end
local function has_navbar(navbar_mode, sidebar_name)
return navbar_mode ~= cfg.i18n.navbar_none and
navbar_mode ~= cfg.i18n.navbar_off and
(
sidebar_name or
mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~=
cfg.i18n.title_not_to_add_navbar
)
end
local function has_list_class(args, htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, value in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles(args)
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(args, htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local plainlist_styles = add_list_templatestyles('plainlist', 'Plainlist/styles.css')
local hlist_styles = add_list_templatestyles('hlist', 'Hlist/styles.css')
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar(args.navbar, args.name) and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note]
return hlist_styles .. plainlist_styles
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
function p.sidebar(frame, args, collapsibleClass)
if not args then
args = getArgs(frame)
end
local hiding_templatestyles = table.concat(move_hiding_templatestyles(args))
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes
root = root:tag('table')
if not child then
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)
:addClass('nomobile')
:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)
:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)
:addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)
:addClass(args.bodyclass or args.class)
:css('width', args.width or nil)
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image
or cfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle
or cfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading' .. num .. 'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup
or cfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content' .. num .. 'class'])
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child and has_navbar(args.navbar, args.name) then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle
})
end
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
}
local templatestyles = ''
if args['templatestyles'] and args['templatestyles'] ~= '' then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] and args['child templatestyles'] ~= '' then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
add_list_styles(args), -- see [hlist_note] above about ordering
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
hiding_templatestyles,
tostring(root),
(child and cfg.i18n.category.child or ''),
categorizeTemplatesWithInlineStyles(args)
})
end
local function list_title(args, is_centered_list_titles, num)
local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title']
or cfg.i18n.default_list_title)
local title
if is_centered_list_titles then
-- collapsible can be finicky, so provide some CSS/HTML to support
title = mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title = mw.html.create()
:wikitext(title_text)
end
local title_container = mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:node(title)
:done()
return title_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
function p.collapsible(frame)
local args = getArgs(frame)
if not args.name and
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') ==
cfg.i18n.collapse_title_not_to_add_navbar then
args.navbar = cfg.i18n.navbar_none
end
local contentArgs = {}
local is_centered_list_titles = false
if args['centered list titles'] and args['centered list titles'] ~= '' then
is_centered_list_titles = true
end
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and
(args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((not expand) and 'mw-collapsed' or nil)
:addClass(args['list' .. num .. 'class'])
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:node(list_title(args, is_centered_list_titles, num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args, cfg.i18n.class.collapse)
end
return p
4d4f75b12d4765eed1a3a742463b568717d01d8f
406
405
2023-01-16T18:15:39Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
require('strict')
local cfg = mw.loadData('Module:Sidebar/configuration')
local p = {}
local getArgs = require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
local function categorizeTemplatesWithInlineStyles(args)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 and title.namespace ~= 828 then return '' end
for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do
if title.text:match(pattern) then return '' end
end
for key, _ in pairs(args) do
if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then
return cfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
local function trimAndAddAutomaticNewline(s)
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
local function hasSubgroup(s)
if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then
return true
else
return false
end
end
local function has_navbar(navbar_mode, sidebar_name)
return navbar_mode ~= cfg.i18n.navbar_none and
navbar_mode ~= cfg.i18n.navbar_off and
(
sidebar_name or
mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~=
cfg.i18n.title_not_to_add_navbar
)
end
local function has_list_class(args, htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, value in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles(args)
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(args, htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local plainlist_styles = add_list_templatestyles('plainlist', 'Plainlist/styles.css')
local hlist_styles = add_list_templatestyles('hlist', 'Hlist/styles.css')
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar(args.navbar, args.name) and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note]
return hlist_styles .. plainlist_styles
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
function p.sidebar(frame, args, collapsibleClass)
if not args then
args = getArgs(frame)
end
local hiding_templatestyles = table.concat(move_hiding_templatestyles(args))
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes
root = root:tag('table')
if not child then
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)
:addClass('nomobile')
:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)
:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)
:addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)
:addClass(args.bodyclass or args.class)
:css('width', args.width or nil)
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image
or cfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle
or cfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading' .. num .. 'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup
or cfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content' .. num .. 'class'])
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child and has_navbar(args.navbar, args.name) then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle
})
end
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
}
local templatestyles = ''
if args['templatestyles'] and args['templatestyles'] ~= '' then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] and args['child templatestyles'] ~= '' then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
add_list_styles(args), -- see [hlist_note] above about ordering
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
hiding_templatestyles,
tostring(root),
(child and cfg.i18n.category.child or ''),
categorizeTemplatesWithInlineStyles(args)
})
end
local function list_title(args, is_centered_list_titles, num)
local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title']
or cfg.i18n.default_list_title)
local title
if is_centered_list_titles then
-- collapsible can be finicky, so provide some CSS/HTML to support
title = mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title = mw.html.create()
:wikitext(title_text)
end
local title_container = mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:node(title)
:done()
return title_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
function p.collapsible(frame)
local args = getArgs(frame)
if not args.name and
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') ==
cfg.i18n.collapse_title_not_to_add_navbar then
args.navbar = cfg.i18n.navbar_none
end
local contentArgs = {}
local is_centered_list_titles = false
if args['centered list titles'] and args['centered list titles'] ~= '' then
is_centered_list_titles = true
end
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and
(args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((not expand) and 'mw-collapsed' or nil)
:addClass(args['list' .. num .. 'class'])
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:node(list_title(args, is_centered_list_titles, num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args, cfg.i18n.class.collapse)
end
return p
4d4f75b12d4765eed1a3a742463b568717d01d8f
Module:Navbar/configuration
828
200
397
2022-12-29T18:18:21Z
beeleth>Izno
0
add hlist/styles.css
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['hlist_templatestyles'] = 'Hlist/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
b007c336b17ec4bcd4d5a9dca9f8cba301662b55
398
397
2023-01-16T18:15:37Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['hlist_templatestyles'] = 'Hlist/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
b007c336b17ec4bcd4d5a9dca9f8cba301662b55
Module:Navbar
828
199
395
2022-12-29T18:20:02Z
beeleth>Izno
0
add templatestyles for hlist
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17
396
395
2023-01-16T18:15:36Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17
User:BEELETH
2
163
325
2023-01-14T20:49:00Z
BEELETH
2
create user page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Module:Transclusion count/data/I
828
229
457
2023-01-15T05:09:03Z
beeleth>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["IAAF_name"] = 2200,
["IAST"] = 5900,
["IBDB_name"] = 9000,
["ICD10"] = 4600,
["ICD9"] = 4400,
["ICS"] = 2800,
["IDN"] = 3200,
["IMDb_episode"] = 9500,
["IMDb_episodes"] = 2400,
["IMDb_name"] = 150000,
["IMDb_title"] = 184000,
["IMO_Number"] = 4000,
["IMSLP"] = 8100,
["IND"] = 7600,
["INR"] = 6100,
["INRConvert"] = 5400,
["INRConvert/CurrentRate"] = 5400,
["INRConvert/USD"] = 5300,
["INRConvert/out"] = 5400,
["IOC_profile"] = 6100,
["IP"] = 2500,
["IPA"] = 136000,
["IPA-all"] = 3400,
["IPA-de"] = 7600,
["IPA-es"] = 7700,
["IPA-fr"] = 42000,
["IPA-it"] = 5700,
["IPA-nl"] = 3600,
["IPA-pl"] = 3900,
["IPA-pt"] = 3600,
["IPA-ru"] = 2600,
["IPA-sh"] = 2700,
["IPA-sl"] = 6800,
["IPA-th"] = 2900,
["IPA_audio_link"] = 19000,
["IPA_link"] = 3100,
["IPAc-cmn"] = 2600,
["IPAc-en"] = 46000,
["IPAc-pl"] = 52000,
["IPC_athlete"] = 2600,
["IPSummary"] = 77000,
["IP_summary"] = 77000,
["IPsock"] = 9300,
["IPtalk"] = 22000,
["IPuser"] = 6800,
["IPvandal"] = 11000,
["IRC"] = 6500,
["IRI"] = 2100,
["IRL"] = 5500,
["IRN"] = 3500,
["ISBN"] = 459000,
["ISBNT"] = 38000,
["ISBN_missing"] = 2200,
["ISFDB_name"] = 4000,
["ISFDB_title"] = 4500,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2700,
["ISO_15924/wp-article"] = 2700,
["ISO_15924/wp-article/format"] = 2700,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 488000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 7000,
["ISP"] = 5400,
["ISR"] = 4700,
["ISSN"] = 11000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 5900,
["ITF_profile"] = 8900,
["ITIS"] = 4300,
["ITN_talk"] = 9600,
["ITN_talk/date"] = 9600,
["IUCN_banner"] = 15000,
["I_sup"] = 4500,
["Iaaf_name"] = 7400,
["Ice_hockey"] = 20000,
["Ice_hockey_stats"] = 15000,
["Icehockeystats"] = 11000,
["Icon"] = 560000,
["If"] = 261000,
["If_all"] = 5800,
["If_between"] = 3700,
["If_both"] = 9870000,
["If_empty"] = 2930000,
["If_first_display_both"] = 61000,
["If_in_page"] = 7400,
["If_last_display_both"] = 28000,
["If_preview"] = 56000,
["If_then_show"] = 251000,
["Ifempty"] = 4000,
["Ifeq"] = 13000,
["Iferror_then_show"] = 3100,
["Ifexist_not_redirect"] = 1090000,
["Ifnotempty"] = 13000,
["Ifnumber"] = 32000,
["Ifsubst"] = 91000,
["Ih"] = 7500,
["Ill"] = 106000,
["Illm"] = 7000,
["Image_frame"] = 3700,
["Image_label"] = 4700,
["Image_label_begin"] = 4000,
["Image_label_end"] = 3600,
["Image_label_small"] = 2800,
["Image_needed"] = 4600,
["Image_other"] = 282000,
["Image_requested"] = 169000,
["Image_requested/Category_helper"] = 162000,
["Imbox"] = 904000,
["Imdb_name"] = 5300,
["Imdb_title"] = 4200,
["Import_style"] = 10000,
["Import_style/inputbox.css"] = 10000,
["Importance"] = 5540000,
["Importance/colour"] = 5560000,
["Importance_mask"] = 8780000,
["Improve_categories"] = 6600,
["In_class"] = 5500,
["In_lang"] = 348000,
["In_progress"] = 3000,
["In_string"] = 67000,
["In_title"] = 18000,
["Inactive_WikiProject_banner"] = 204000,
["Inactive_userpage_blanked"] = 4800,
["Include-USGov"] = 29000,
["Incomplete_list"] = 22000,
["Inconclusive"] = 2000,
["Increase"] = 40000,
["Incumbent_pope"] = 4300,
["Indent"] = 4000,
["IndexFungorum"] = 2200,
["Indian_English"] = 4100,
["Indian_Rupee"] = 9900,
["Indian_railway_code"] = 3100,
["Inflation"] = 18000,
["Inflation-fn"] = 5300,
["Inflation-year"] = 4300,
["Inflation/IN/startyear"] = 5400,
["Inflation/UK"] = 4200,
["Inflation/UK/dataset"] = 4200,
["Inflation/UK/startyear"] = 4200,
["Inflation/US"] = 11000,
["Inflation/US/dataset"] = 11000,
["Inflation/US/startyear"] = 11000,
["Inflation/fn"] = 6000,
["Inflation/year"] = 23000,
["Info"] = 7100,
["Infobox"] = 3110000,
["Infobox/Columns"] = 2200,
["Infobox/mobileviewfix.css"] = 19000,
["Infobox3cols"] = 16000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5500,
["Infobox_Aircraft_Type"] = 4800,
["Infobox_Athletics_Championships"] = 2600,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2400,
["Infobox_COA_wide"] = 3100,
["Infobox_Canada_electoral_district"] = 2400,
["Infobox_Canadian_Football_League_biography"] = 5900,
["Infobox_Canadian_Football_League_biography/position"] = 5800,
["Infobox_Chinese"] = 19000,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 15000,
["Infobox_Christian_leader"] = 17000,
["Infobox_Election"] = 2500,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 3200,
["Infobox_Gaelic_games_player"] = 4900,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Greece_place"] = 2800,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_state_legislative_assembly_constituency"] = 3600,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_MLB_yearly"] = 3100,
["Infobox_NCAA_team_season"] = 18000,
["Infobox_NFL_biography"] = 27000,
["Infobox_NFL_player"] = 8200,
["Infobox_NFL_season"] = 2600,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 5600,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Paralympic_event"] = 2500,
["Infobox_Paralympic_event/games_text"] = 2500,
["Infobox_Politician"] = 2400,
["Infobox_Romanian_subdivision"] = 3100,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4400,
["Infobox_SCOTUS_case"] = 3600,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 2100,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_legislation"] = 2200,
["Infobox_UK_place"] = 25000,
["Infobox_UK_place/NoDialCode"] = 7700,
["Infobox_UK_place/NoPostCode"] = 2900,
["Infobox_UK_place/area"] = 2300,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 25000,
["Infobox_UK_place/styles.css"] = 25000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3800,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9300,
["Infobox_YouTube_personality"] = 2400,
["Infobox_academic"] = 12000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2200,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4500,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 14000,
["Infobox_album"] = 160000,
["Infobox_album/color"] = 187000,
["Infobox_album/link"] = 160000,
["Infobox_anatomy"] = 4400,
["Infobox_ancient_site"] = 5100,
["Infobox_animanga/Footer"] = 6600,
["Infobox_animanga/Header"] = 6600,
["Infobox_animanga/Print"] = 5300,
["Infobox_animanga/Video"] = 4600,
["Infobox_architect"] = 3500,
["Infobox_artist"] = 27000,
["Infobox_artist_discography"] = 5800,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 3100,
["Infobox_automobile"] = 8300,
["Infobox_award"] = 12000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_basketball_biography"] = 20000,
["Infobox_basketball_biography/style"] = 20000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4300,
["Infobox_body_of_water"] = 17000,
["Infobox_book"] = 51000,
["Infobox_boxer"] = 5600,
["Infobox_bridge"] = 5900,
["Infobox_building"] = 26000,
["Infobox_character"] = 7800,
["Infobox_chess_biography"] = 3500,
["Infobox_chess_player"] = 3000,
["Infobox_church"] = 14000,
["Infobox_church/denomination"] = 14000,
["Infobox_church/font_color"] = 14000,
["Infobox_civil_conflict"] = 2200,
["Infobox_civilian_attack"] = 4900,
["Infobox_college_coach"] = 11000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_sports_team_season"] = 38000,
["Infobox_college_sports_team_season/link"] = 38000,
["Infobox_college_sports_team_season/name"] = 38000,
["Infobox_college_sports_team_season/succession"] = 38000,
["Infobox_college_sports_team_season/team"] = 38000,
["Infobox_comic_book_title"] = 2900,
["Infobox_comics_character"] = 3600,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 82000,
["Infobox_concert"] = 3200,
["Infobox_constituency"] = 5000,
["Infobox_country"] = 6200,
["Infobox_country/formernext"] = 5900,
["Infobox_country/imagetable"] = 5000,
["Infobox_country/multirow"] = 8000,
["Infobox_country/status_text"] = 2700,
["Infobox_country/styles.css"] = 6200,
["Infobox_country_at_games"] = 14000,
["Infobox_country_at_games/core"] = 14000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4500,
["Infobox_court_case/images"] = 2300,
["Infobox_cricket_tournament"] = 2200,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7400,
["Infobox_criminal"] = 6000,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4400,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5500,
["Infobox_designation_list"] = 18000,
["Infobox_designation_list/entry"] = 16000,
["Infobox_dim"] = 6700,
["Infobox_dim/core"] = 6700,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9200,
["Infobox_drug/chemical_formula"] = 9200,
["Infobox_drug/data_page_link"] = 9200,
["Infobox_drug/formatATC"] = 9100,
["Infobox_drug/formatCASnumber"] = 9200,
["Infobox_drug/formatChEBI"] = 9200,
["Infobox_drug/formatChEMBL"] = 9200,
["Infobox_drug/formatChemDBNIAID"] = 9200,
["Infobox_drug/formatChemSpider"] = 9200,
["Infobox_drug/formatCompTox"] = 9200,
["Infobox_drug/formatDrugBank"] = 9200,
["Infobox_drug/formatIUPHARBPS"] = 9200,
["Infobox_drug/formatJmol"] = 9200,
["Infobox_drug/formatKEGG"] = 9200,
["Infobox_drug/formatPDBligand"] = 8600,
["Infobox_drug/formatPubChemCID"] = 9200,
["Infobox_drug/formatPubChemSID"] = 9200,
["Infobox_drug/formatUNII"] = 9200,
["Infobox_drug/legal_status"] = 9300,
["Infobox_drug/licence"] = 9200,
["Infobox_drug/maintenance_categories"] = 9200,
["Infobox_drug/pregnancy_category"] = 9200,
["Infobox_drug/title"] = 9200,
["Infobox_election"] = 27000,
["Infobox_election/row"] = 27000,
["Infobox_election/shortname"] = 26000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7000,
["Infobox_event"] = 4900,
["Infobox_family"] = 2000,
["Infobox_figure_skater"] = 4100,
["Infobox_film"] = 152000,
["Infobox_film/short_description"] = 148000,
["Infobox_film_awards"] = 2500,
["Infobox_film_awards/link"] = 2500,
["Infobox_film_awards/style"] = 2500,
["Infobox_food"] = 6700,
["Infobox_football_biography"] = 203000,
["Infobox_football_club"] = 27000,
["Infobox_football_club_season"] = 19000,
["Infobox_football_league"] = 2500,
["Infobox_football_league_season"] = 19000,
["Infobox_football_match"] = 5600,
["Infobox_football_tournament_season"] = 7300,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2000,
["Infobox_game"] = 2300,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4000,
["Infobox_golfer"] = 4300,
["Infobox_golfer/highest_ranking"] = 4300,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2400,
["Infobox_gridiron_football_person"] = 2700,
["Infobox_gridiron_football_person/position"] = 5800,
["Infobox_gymnast"] = 3300,
["Infobox_handball_biography"] = 4800,
["Infobox_historic_site"] = 11000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6200,
["Infobox_hospital/care_system"] = 6200,
["Infobox_hospital/lists"] = 6200,
["Infobox_ice_hockey_biography"] = 19000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_information_appliance"] = 2300,
["Infobox_international_football_competition"] = 5500,
["Infobox_islands"] = 8600,
["Infobox_islands/area"] = 9000,
["Infobox_islands/density"] = 9000,
["Infobox_islands/length"] = 8600,
["Infobox_islands/styles.css"] = 8600,
["Infobox_journal"] = 9600,
["Infobox_journal/Abbreviation_search"] = 9500,
["Infobox_journal/Bluebook_check"] = 9300,
["Infobox_journal/Former_check"] = 9300,
["Infobox_journal/ISO_4_check"] = 9300,
["Infobox_journal/ISSN-eISSN"] = 9400,
["Infobox_journal/Indexing_search"] = 9400,
["Infobox_journal/MathSciNet_check"] = 9300,
["Infobox_journal/NLM_check"] = 9300,
["Infobox_journal/frequency"] = 8500,
["Infobox_lake"] = 4500,
["Infobox_language"] = 9400,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6500,
["Infobox_language/linguistlist"] = 9400,
["Infobox_language/ref"] = 7000,
["Infobox_law_enforcement_agency"] = 2000,
["Infobox_legislature"] = 3500,
["Infobox_library"] = 2100,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4800,
["Infobox_magazine"] = 7400,
["Infobox_manner_of_address"] = 3200,
["Infobox_mapframe"] = 79000,
["Infobox_martial_artist"] = 5500,
["Infobox_martial_artist/record"] = 5500,
["Infobox_medal_templates"] = 414000,
["Infobox_medical_condition"] = 9900,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_military_conflict"] = 21000,
["Infobox_military_installation"] = 9600,
["Infobox_military_person"] = 44000,
["Infobox_military_unit"] = 25000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_mountain"] = 27000,
["Infobox_multi-sport_competition_event"] = 2200,
["Infobox_museum"] = 10000,
["Infobox_musical_artist"] = 119000,
["Infobox_musical_artist/color"] = 119000,
["Infobox_musical_artist/hCard_class"] = 307000,
["Infobox_musical_composition"] = 2700,
["Infobox_name"] = 7300,
["Infobox_name_module"] = 11000,
["Infobox_newspaper"] = 9300,
["Infobox_nobility"] = 2400,
["Infobox_noble"] = 7000,
["Infobox_officeholder"] = 206000,
["Infobox_officeholder/office"] = 211000,
["Infobox_official_post"] = 7700,
["Infobox_organization"] = 35000,
["Infobox_pageant_titleholder"] = 2800,
["Infobox_park"] = 7100,
["Infobox_person"] = 454000,
["Infobox_person/Wikidata"] = 4800,
["Infobox_person/height"] = 100000,
["Infobox_person/length"] = 6900,
["Infobox_person/weight"] = 65000,
["Infobox_philosopher"] = 3200,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3700,
["Infobox_political_party"] = 13000,
["Infobox_power_station"] = 2900,
["Infobox_prepared_food"] = 3300,
["Infobox_professional_wrestler"] = 4100,
["Infobox_professional_wrestling_event"] = 2500,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2300,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3500,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7100,
["Infobox_rail_line/tracking"] = 7100,
["Infobox_rail_service"] = 2900,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3300,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6200,
["Infobox_religious_biography"] = 4900,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 16000,
["Infobox_restaurant"] = 2300,
["Infobox_river"] = 29000,
["Infobox_river/calcunit"] = 29000,
["Infobox_river/discharge"] = 29000,
["Infobox_river/row-style"] = 29000,
["Infobox_river/source"] = 29000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2200,
["Infobox_rockunit"] = 6400,
["Infobox_royalty"] = 21000,
["Infobox_royalty/short_description"] = 13000,
["Infobox_rugby_biography"] = 15000,
["Infobox_rugby_biography/correct_date"] = 15000,
["Infobox_rugby_biography/depcheck"] = 6800,
["Infobox_rugby_league_biography"] = 9800,
["Infobox_rugby_league_biography/PLAYER"] = 9700,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2100,
["Infobox_saint"] = 4900,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5600,
["Infobox_school_district/styles.css"] = 5600,
["Infobox_scientist"] = 47000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 551000,
["Infobox_settlement/areadisp"] = 231000,
["Infobox_settlement/columns"] = 92000,
["Infobox_settlement/columns/styles.css"] = 92000,
["Infobox_settlement/densdisp"] = 421000,
["Infobox_settlement/impus"] = 80000,
["Infobox_settlement/lengthdisp"] = 167000,
["Infobox_settlement/link"] = 92000,
["Infobox_settlement/metric"] = 206000,
["Infobox_settlement/pref"] = 286000,
["Infobox_settlement/styles.css"] = 551000,
["Infobox_ship_begin"] = 40000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 40000,
["Infobox_ship_class_overview"] = 4000,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3400,
["Infobox_short_story"] = 2300,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 74000,
["Infobox_song/color"] = 74000,
["Infobox_song/link"] = 74000,
["Infobox_spaceflight"] = 3500,
["Infobox_spaceflight/styles.css"] = 3500,
["Infobox_sports_competition_event"] = 15000,
["Infobox_sports_competition_event/medalrow"] = 10000,
["Infobox_sports_league"] = 4900,
["Infobox_sports_season"] = 5100,
["Infobox_sports_team"] = 2300,
["Infobox_sportsperson"] = 105000,
["Infobox_stadium"] = 3800,
["Infobox_station"] = 54000,
["Infobox_station/doc"] = 54000,
["Infobox_station/services"] = 54000,
["Infobox_station/styles.css"] = 54000,
["Infobox_street"] = 3200,
["Infobox_swimmer"] = 9300,
["Infobox_television"] = 55000,
["Infobox_television/Short_description"] = 53000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 11000,
["Infobox_television_episode/styles.css"] = 11000,
["Infobox_television_season"] = 9100,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 9900,
["Infobox_tennis_event"] = 2300,
["Infobox_tennis_tournament_event"] = 18000,
["Infobox_tennis_tournament_year"] = 8900,
["Infobox_tennis_tournament_year/color"] = 27000,
["Infobox_tennis_tournament_year/footer"] = 27000,
["Infobox_train"] = 2200,
["Infobox_tropical_cyclone"] = 2300,
["Infobox_union"] = 2200,
["Infobox_university"] = 26000,
["Infobox_user"] = 2600,
["Infobox_venue"] = 17000,
["Infobox_video_game"] = 27000,
["Infobox_video_game/styles.css"] = 27000,
["Infobox_volleyball_biography"] = 5200,
["Infobox_weapon"] = 7200,
["Infobox_website"] = 7600,
["Infobox_writer"] = 37000,
["Information"] = 105000,
["Information/styles.css"] = 105000,
["Inprogress"] = 2200,
["Input_link"] = 32000,
["Instagram"] = 9600,
["Interlanguage_link"] = 142000,
["Interlanguage_link_multi"] = 20000,
["Internet_Archive_author"] = 18000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 11000,
["Invalid_SVG"] = 3800,
["Invalid_SVG/styles.css"] = 3800,
["Ipsock"] = 7900,
["Iptalk"] = 20000,
["IranCensus2006"] = 54000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 54000,
["Irc"] = 2100,
["Irish_place_name"] = 2500,
["IsIPAddress"] = 38000,
["IsValidPageName"] = 133000,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 13000,
["Is_interwiki_link"] = 6000,
["Is_italic_taxon"] = 452000,
["Is_redirect"] = 25000,
["Isbn"] = 6600,
["Isfdb_name"] = 3900,
["Isfdb_title"] = 4500,
["Isnumeric"] = 199000,
["Iso2continent"] = 33000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 215000,
["Issubst"] = 71000,
["Isu_name"] = 2300,
["Italic_dab2"] = 5000,
["Italic_title"] = 294000,
["Italic_title_prefixed"] = 8600,
["Italics_colon"] = 3300,
["Italictitle"] = 4400,
["Ivm"] = 5800,
["Ivm/styles.css"] = 5800,
["Ivmbox"] = 120000,
["Ivory_messagebox"] = 134000,
["Module:I18n/complex_date"] = 64000,
["Module:IP"] = 111000,
["Module:IPA_symbol"] = 4300,
["Module:IPA_symbol/data"] = 4400,
["Module:IPAc-en"] = 46000,
["Module:IPAc-en/data"] = 46000,
["Module:IPAc-en/phonemes"] = 46000,
["Module:IPAc-en/pronunciation"] = 46000,
["Module:IPAddress"] = 168000,
["Module:ISO_3166"] = 982000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2700,
["Module:ISO_3166/data/CN"] = 2000,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3500,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6300,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 28000,
["Module:ISO_3166/data/National"] = 982000,
["Module:ISO_3166/data/PL"] = 2500,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 24000,
["Module:ISO_3166/data/TR"] = 2300,
["Module:ISO_3166/data/US"] = 83000,
["Module:ISO_639_name"] = 13000,
["Module:ISOdate"] = 64000,
["Module:Icon"] = 560000,
["Module:Icon/data"] = 560000,
["Module:If_empty"] = 2930000,
["Module:If_in_page"] = 7400,
["Module:If_preview"] = 465000,
["Module:If_preview/configuration"] = 465000,
["Module:If_preview/styles.css"] = 465000,
["Module:Import_style"] = 10000,
["Module:In_lang"] = 348000,
["Module:Indent"] = 4000,
["Module:Infobox"] = 3990000,
["Module:Infobox/dates"] = 64000,
["Module:Infobox/styles.css"] = 4240000,
["Module:Infobox3cols"] = 291000,
["Module:InfoboxImage"] = 4280000,
["Module:Infobox_body_of_water_tracking"] = 17000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 375000,
["Module:Infobox_military_conflict"] = 21000,
["Module:Infobox_military_conflict/styles.css"] = 21000,
["Module:Infobox_multi-lingual_name"] = 19000,
["Module:Infobox_multi-lingual_name/data"] = 19000,
["Module:Infobox_power_station"] = 2900,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 55000,
["Module:Infobox_television_disambiguation_check"] = 62000,
["Module:Infobox_television_episode"] = 11000,
["Module:Infobox_television_season_disambiguation_check"] = 8600,
["Module:Infobox_television_season_name"] = 9100,
["Module:Internet_Archive"] = 18000,
["Module:IrelandByCountyCatNav"] = 2500,
["Module:Is_infobox_in_lead"] = 372000,
["Module:Is_instance"] = 8000,
["Module:Italic_title"] = 1090000,
["Module:Italic_title2"] = 5000,
}
f698d6f8949cf41d32be12a685875510b85ac931
File:Halwhite.png
6
164
326
2023-01-16T17:58:21Z
BEELETH
2
Halberd's white hair design as of January 2023
wikitext
text/x-wiki
== Summary ==
Halberd's white hair design as of January 2023
74e4626ac7a7929f9766762ac4613266d6e6b38a
File:Halbrown.png
6
165
327
2023-01-16T17:59:22Z
BEELETH
2
Halberd's brown hair design as of January 2023
wikitext
text/x-wiki
== Summary ==
Halberd's brown hair design as of January 2023
fccae251b6f8ca378d1485c5828dbb50492f01a6
Halberd (character)
0
166
328
2023-01-16T18:01:17Z
BEELETH
2
Created page placeholder; will edit momentarily
wikitext
text/x-wiki
Placeholder
ed212fa164b940b935ec0a25b32878a0917c7268
MediaWiki:Common.css
8
167
329
2023-01-16T18:10:28Z
BEELETH
2
Imported from Wikipedia
css
text/css
/* CSS placed here will be applied to all skins */
/*
* This is the CSS common to all desktop skins on en.Wikipedia.
* Styling inside .mw-parser-output should generally use TemplateStyles.
*/
/* Reset italic styling set by user agent */
cite,
dfn {
font-style: inherit;
}
/* Straight quote marks for <q> */
q {
quotes: '"' '"' "'" "'";
}
/* Avoid collision of blockquote with floating elements by swapping margin and padding */
blockquote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
/* Consistent size for <small>, <sub> and <sup> */
small {
font-size: 85%;
}
.mw-body-content sub,
.mw-body-content sup {
font-size: 80%;
}
/* Same spacing for indented and unindented paragraphs on talk pages */
.ns-talk .mw-body-content dd {
margin-top: 0.4em;
margin-bottom: 0.4em;
}
/* Reduce page jumps by hiding collapsed/dismissed content */
.client-js .mw-special-Watchlist #watchlist-message,
.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
/* Avoid FOUC/reflows on collapsed elements. */
/* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */
/* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */
/* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,
/* Hide charinsert base for those not using the gadget */
#editpage-specialchars {
display: none;
}
/* Make the list of references smaller
* Keep in sync with Template:Refbegin/styles.css
* And Template:Reflist/styles.css
*/
ol.references {
font-size: 90%;
margin-bottom: 0.5em;
}
/* Cite customizations for Parsoid
* Once everything uses the one true parser these are just customizations
*/
.references span[ rel~='mw:referencedBy' ] > a:before {
content: counter( mw-ref-linkback, lower-alpha );
}
/* Styling for jQuery makeCollapsible, matching that of collapseButton */
.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {
font-weight: normal;
padding-right: 0.2em;
padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {
/* @noflip */
float: left;
}
/* Lists in wikitable data cells are always left-aligned */
.wikitable td ul,
.wikitable td ol,
.wikitable td dl {
/* @noflip */
text-align: left;
}
/* Fix for hieroglyphs specificity issue in infoboxes ([[phab:T43869]]) */
.mw-parser-output table.mw-hiero-table td {
vertical-align: middle;
}
/* Change the external link icon to a PDF icon for all PDF files */
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;
/* @noflip */
padding: 8px 18px 8px 0;
}
/* System messages styled similarly to fmbox */
div.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon,
div.titleblacklist-warning {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
/* default colors for partial block message */
.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt {
border-color: #fc3;
background-color: #fef6e7;
}
/* Increase the height of the image upload box */
#wpUploadDescription {
height: 13em;
}
/* Minimum thumb width */
.thumbinner {
min-width: 100px;
}
/* Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views. */
#mw-subcategories,
#mw-pages,
#mw-category-media,
#filehistory,
#wikiPreview,
#wikiDiff {
clear: both;
}
/* Styling for tags in changes pages */
.mw-tag-markers {
font-style: italic;
font-size: 90%;
}
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]],
[[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */
.checkuser-show,
.sysop-show,
.abusefilter-show,
.abusefilter-helper-show,
.patroller-show,
.templateeditor-show,
.extendedmover-show,
.extendedconfirmed-show,
.autoconfirmed-show,
.user-show {
display: none;
}
/* Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive. */
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright {
display: none !important;
}
/* Remove bullets when there are multiple edit page warnings */
ul.permissions-errors {
margin: 0;
}
ul.permissions-errors > li {
list-style: none;
}
/* larger inline math */
span.mwe-math-mathml-inline {
font-size: 118%;
}
/* Make <math display="block"> be left aligned with one space indent for
* compatibility with style conventions
*/
.mwe-math-fallback-image-display,
.mwe-math-mathml-display {
margin-left: 1.6em !important;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
.mwe-math-mathml-display math {
display: inline;
}
@media screen {
/* Gallery styles background changes are restricted to screen view.
In printing we should avoid applying backgrounds. */
/* The backgrounds for galleries. */
#content .gallerybox div.thumb {
/* Light gray padding */
background-color: #f8f9fa;
}
/* Put a chequered background behind images, only visible if they have transparency.
'.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */
.gallerybox .thumb img {
background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
}
/* But not on articles, user pages, or portals. */
.ns-0 .gallerybox .thumb img,
.ns-2 .gallerybox .thumb img,
.ns-100 .gallerybox .thumb img {
background-image: none;
}
/* Display "From Wikipedia, the free encyclopedia" in skins that support it,
do not apply to print mode */
#siteSub {
display: block;
}
}
/* Hide FlaggedRevs notice UI when there are no pending changes */
.flaggedrevs_draft_synced,
.flaggedrevs_stable_synced,
/* "Temporary" to remove links in sidebar T255381 */
#t-upload,
/* Hide broken download box on Special:Book pending T285400 */
.mw-special-Book #coll-downloadbox {
display: none;
}
/*
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/* Infobox template style */
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
/* @noflip */
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
/* @noflip */
text-align: left;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-above,
.infobox .infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
padding: 0.2em;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-navbar {
/* @noflip */
text-align: right;
}
/* Normal font styling for wikitable row headers with scope="row" tag */
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
/* @noflip */
text-align: left;
}
/* Remove underlines from certain links */
.nounderlines a,
.IPA a:link,
.IPA a:visited {
text-decoration: none !important;
}
/* Prevent line breaks in silly places where desired (nowrap)
and links when we don't want them to (nowraplinks a) */
.nowrap,
.nowraplinks a {
white-space: nowrap;
}
/* But allow wrapping where desired: */
.wrap,
.wraplinks a {
white-space: normal;
}
/* texhtml class for inline math (based on generic times-serif class) */
span.texhtml {
font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
font-size: 118%;
line-height: 1;
white-space: nowrap;
/* Force tabular and lining display for texhtml */
-webkit-font-feature-settings: "lnum", "tnum", "kern" 0;
font-feature-settings: "lnum", "tnum", "kern" 0;
font-variant-numeric: lining-nums tabular-nums;
font-kerning: none;
}
span.texhtml span.texhtml {
font-size: 100%;
}
@media screen {
.nochecker .gallerybox .thumb img {
background-image: none;
}
}
/* Put anything you mean to be a sitewide addition above the TemplateStyles
* comment above.
*/
506d42a6c35ba5c31472523261b43c55e2b4d0e8
MediaWiki:Common.js
8
168
330
2023-01-16T18:11:17Z
BEELETH
2
Imported from Wikipedia
javascript
text/javascript
/* Any JavaScript here will be loaded for all users on every page load. */
/**
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/
/* global mw, $ */
/* jshint strict:false, browser:true */
mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
/**
* Test if an element has a certain class
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
/**
* WikiMiniAtlas
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on the Meta-Wiki because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
*/
$( function () {
var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
if ( requireWikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
/**
* Collapsible tables; reimplemented with mw-collapsible
* Styling is also in place to avoid FOUC
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );
$.each( $tables, function ( index, table ) {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
if ( $( table ).hasClass( 'collapsed' ) ) {
$( table ).addClass( 'mw-collapsed' );
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.find( 'a' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
/**
* Magic editintros ****************************************************
*
* Description: Adds editintros on disambiguation pages and BLP pages.
* Maintainers: [[User:RockMFR]]
*
* @param {string} name
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
$( function () {
if ( document.getElementById( 'disambigbox' ) ) {
addEditIntro( 'Template:Disambig_editintro' );
}
} );
$( function () {
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
addEditIntro( 'Template:BLP_editintro' );
}
} );
}
/* Actions specific to the edit page */
if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) {
/**
* Fix edit summary prompt for undo
*
* Fixes the fact that the undo function combined with the "no edit summary prompter"
* complains about missing editsummary, if leaving the edit summary unchanged.
* Added by [[User:Deskana]], code by [[User:Tra]].
* See also [[phab:T10912]].
*/
$( function () {
if ( document.location.search.indexOf( 'undo=' ) !== -1 && document.getElementsByName( 'wpAutoSummary' )[ 0 ] ) {
document.getElementsByName( 'wpAutoSummary' )[ 0 ].value = '1';
}
} );
}
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */
dc4bc28ba30537374651c2014e8066b13f8b0bba
Template:Infobox
10
169
332
331
2023-01-16T18:15:23Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
Module:Infobox
828
170
334
333
2023-01-16T18:15:23Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
0ddb7e5c8426d67cd589b710efb9912ddfb67fea
Module:Yesno
828
171
336
335
2023-01-16T18:15:24Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:Arguments
828
172
338
337
2023-01-16T18:15:24Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Template:Tl
10
173
340
339
2023-01-16T18:15:24Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Redirect category shell|
{{R from move}}
}}
d6593bb3b4a866249f55d0f34b047a71fe1f1529
Template:Template link
10
174
342
341
2023-01-16T18:15:25Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eabbec62efe3044a98ebb3ce9e7d4d43c222351d
Module:Message box
828
175
344
343
2023-01-16T18:15:25Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705
Module:Message box/configuration
828
176
346
345
2023-01-16T18:15:26Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css'
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css'
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
b6f0151037e6867b577c8cca32ff297e48697a10
Template:Yesno
10
177
348
347
2023-01-16T18:15:26Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
629c2937bc5cf7cfe13cd2a598582af832782399
Template:Main other
10
178
350
349
2023-01-16T18:15:27Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}
| main
| other
}}
}}
| main = {{{1|}}}
| other
| #default = {{{2|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
86ad907ffeea3cc545159e00cd1f2d6433946450
Template:Nobold
10
179
352
351
2023-01-16T18:15:28Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
9c92b5951772bb26ca0fbe9256418b65e47700dd
Template:Nobold/styles.css
10
180
354
353
2023-01-16T18:15:28Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp-template}} */
/* Styling for Template:Nobold */
.nobold {
font-weight: normal;
}
83e5f0adacf8c7984251f1fd9d11ed82ebaadf03
Module:Check for unknown parameters
828
181
356
355
2023-01-16T18:15:28Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
local knownargs = {}
local regexps = {}
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
-- loop over the parent args, and make sure they are on the list
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local values = {}
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(tostring(k), regexp) then
knownflag = true
break
end
end
if not knownflag and ( showblankpos or isnotempty(v) ) then
table.insert(values, k .. ' = ' .. clean(v))
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local unknown_text = args['unknown'] or 'Found _VALUE_, '
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
local preview_text = args['preview']
if isnotempty(preview_text) then
preview_text = require('Module:If preview')._warning({preview_text})
elseif preview == nil then
preview_text = unknown_text
end
unknown_text = preview_text
end
for _, v in pairs(values) do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
if v == '' then v = ' ' end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
93db6d115d4328d2a5148bb42959105e367b663e
Module:String
828
182
358
357
2023-01-16T18:15:29Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Module:Infobox/styles.css
828
183
360
359
2023-01-16T18:15:29Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
Module:TableTools
828
185
364
363
2023-01-16T18:15:30Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = _deepCopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if valueToFind is a member of the array, and false otherwise.
------------------------------------------------------------------------------------
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
085e7094ac84eb0132ee65822cf3f69cd8ba3d81
Template:Tlx
10
186
366
365
2023-01-16T18:15:31Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
#REDIRECT [[Template:Template link expanded]]
{{Redirect category shell|
{{R from move}}
}}
1fec988ceb46cb324af228aac45d7cd25fcc9008
Template:Template link expanded
10
187
368
367
2023-01-16T18:15:31Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#Invoke:Template link general|main|code=on}}<noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlx}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
6c99696fee02f1da368ed20d2504e19bc15b1c13
Module:Template link general
828
188
370
369
2023-01-16T18:15:31Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This implements Template:Tlg
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Is a string non-empty?
local function _ne(s)
return s ~= nil and s ~= ""
end
local nw = mw.text.nowiki
local function addTemplate(s)
local i, _ = s:find(':', 1, true)
if i == nil then
return 'Template:' .. s
end
local ns = s:sub(1, i - 1)
if ns == '' or mw.site.namespaces[ns] then
return s
else
return 'Template:' .. s
end
end
local function trimTemplate(s)
local needle = 'template:'
if s:sub(1, needle:len()):lower() == needle then
return s:sub(needle:len() + 1)
else
return s
end
end
local function linkTitle(args)
if _ne(args.nolink) then
return args['1']
end
local titleObj
local titlePart = '[['
if args['1'] then
-- This handles :Page and other NS
titleObj = mw.title.new(args['1'], 'Template')
else
titleObj = mw.title.getCurrentTitle()
end
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or
addTemplate(args['1']))
local textPart = args.alttext
if not _ne(textPart) then
if titleObj ~= nil then
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText
else
-- redlink
textPart = args['1']
end
end
if _ne(args.subst) then
-- HACK: the ns thing above is probably broken
textPart = 'subst:' .. textPart
end
if _ne(args.brace) then
textPart = nw('{{') .. textPart .. nw('}}')
elseif _ne(args.braceinside) then
textPart = nw('{') .. textPart .. nw('}')
end
titlePart = titlePart .. '|' .. textPart .. ']]'
if _ne(args.braceinside) then
titlePart = nw('{') .. titlePart .. nw('}')
end
return titlePart
end
function p.main(frame)
local args = getArgs(frame, {
trim = true,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)
local italic = _ne(args.italic) or _ne(args.italics)
local dontBrace = _ne(args.brace) or _ne(args.braceinside)
local code = _ne(args.code) or _ne(args.tt)
local show_result = _ne(args._show_result)
local expand = _ne(args._expand)
-- Build the link part
local titlePart = linkTitle(args)
if bold then titlePart = "'''" .. titlePart .. "'''" end
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end
-- Build the arguments
local textPart = ""
local textPartBuffer = "|"
local codeArguments = {}
local codeArgumentsString = ""
local i = 2
local j = 1
while args[i] do
local val = args[i]
if val ~= "" then
if _ne(args.nowiki) then
-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will
-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up
val = nw(mw.text.unstripNoWiki(val))
end
local k, v = string.match(val, "(.*)=(.*)")
if not k then
codeArguments[j] = val
j = j + 1
else
codeArguments[k] = v
end
codeArgumentsString = codeArgumentsString .. textPartBuffer .. val
if italic then
val = '<span style="font-style:italic;">' .. val .. '</span>'
end
textPart = textPart .. textPartBuffer .. val
end
i = i + 1
end
-- final wrap
local ret = titlePart .. textPart
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end
if _ne(args.a) then ret = nw('*') .. ' ' .. ret end
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end
if code then
ret = '<code>' .. ret .. '</code>'
elseif _ne(args.plaincode) then
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'
end
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end
--[[ Wrap as html??
local span = mw.html.create('span')
span:wikitext(ret)
--]]
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end
if show_result then
local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments}
ret = ret .. " → " .. result
end
if expand then
local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}')
local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query)
mw.log()
ret = ret .. " [" .. tostring(url) .. "]"
end
return ret
end
return p
c7307fa3959d308a2dd7fd2f5009c1ce6db3d122
Template:Template other
10
189
372
371
2023-01-16T18:15:32Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Template:Clear
10
84
374
167
2023-01-16T18:15:32Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude>
{{documentation}}</noinclude>
02f4c0e17d50c41f902cad74e6d937f585ba4719
Template:Distinguish
10
190
376
375
2023-01-16T18:15:33Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. -->
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
f949a4cbfd6eb0ab77b832e69059a40a964b1fd8
Template:Sidebar
10
191
378
377
2023-01-16T18:15:33Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#invoke:Sidebar|sidebar}}<noinclude>
{{documentation}}</noinclude>
ab2498000a99daf324f656b0badd187b4a3e2b42
Module:Distinguish
828
192
380
379
2023-01-16T18:15:33Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools --initialize lazily
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.distinguish(frame)
mArguments = require('Module:Arguments')
mTableTools = require('Module:TableTools')
local args = mArguments.getArgs(frame)
local selfref = args.selfref
local text = args.text
args = mTableTools.compressSparseArray(args)
return p._distinguish(args, text, selfref)
end
function p._distinguish(args, text, selfref)
checkType("_distinguish", 1, args, 'table')
if #args == 0 and not text then return '' end
local text = string.format(
'Not to be confused with %s.',
text or mHatlist.orList(args, true)
)
hnOptions = {selfref = selfref}
return mHatnote._hatnote(text, hnOptions)
end
return p
0364d14af01fc656ad1d898c5036fbd12a7ca938
Module:Effective protection expiry
828
193
382
381
2023-01-16T18:15:34Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
-- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title)
return stabilitySettings and stabilitySettings.expiry or 'unknown'
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )
end
local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename)
if rawExpiry == 'infinity' then
return 'infinity'
elseif rawExpiry == '' then
return 'unknown'
else
local year, month, day, hour, minute, second = rawExpiry:match(
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$'
)
if year then
return string.format(
'%s-%s-%sT%s:%s:%s',
year, month, day, hour, minute, second
)
else
error('internal error in Module:Effective protection expiry; malformed expiry timestamp')
end
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
9a8c58dc2667232ed08a9b206a5d89ca8150312b
Module:Effective protection level
828
194
384
383
2023-01-16T18:15:34Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
-- Returns the permission required to perform a given action on a given title.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local level = mw.ext.FlaggedRevs.getStabilitySettings(title)
level = level and level.autoreview
if level == 'review' then
return 'reviewer'
elseif level ~= '' then
return level
else
return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review
end
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then
error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 )
end
if title.namespace == 8 then -- MediaWiki namespace
if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page
return 'interfaceadmin'
else -- any non-JS/CSS MediaWiki page
return 'sysop'
end
elseif title.namespace == 2 and title.isSubpage then
if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page
return 'interfaceadmin'
elseif title.contentModel == 'json' then -- user JSON page
return 'sysop'
end
end
if action == 'undelete' then
return 'sysop'
end
local level = title.protectionLevels[action] and title.protectionLevels[action][1]
if level == 'sysop' or level == 'editprotected' then
return 'sysop'
elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page
return 'sysop'
elseif level == 'templateeditor' then
return 'templateeditor'
elseif action == 'move' then
local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.
if blacklistentry and not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif title.namespace == 6 then
return 'filemover'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
end
local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
if blacklistentry then
if not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason
return 'autoconfirmed'
elseif level then
return level
elseif action == 'upload' then
return 'autoconfirmed'
elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts
return 'user'
else
return '*'
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
70256a489edf6be9808031b14a7e3ef3e025da97
Module:File link
828
195
386
385
2023-01-16T18:15:35Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module provides a library for formatting file wikilinks.
local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our
-- own function to get the right error level.
local function checkArg(key, val, level)
if type(val) ~= 'string' then
error(string.format(
"type error in '%s' parameter of '_main' (expected string, got %s)",
key, type(val)
), level)
end
end
local ret = {}
-- Adds a positional parameter to the buffer.
local function addPositional(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = val
end
-- Adds a named parameter to the buffer. We assume that the parameter name
-- is the same as the argument key.
local function addNamed(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = key .. '=' .. val
end
-- Filename
checkArg('file', args.file, 3)
ret[#ret + 1] = 'File:' .. args.file
-- Format
if args.format then
checkArg('format', args.format)
if args.formatfile then
checkArg('formatfile', args.formatfile)
ret[#ret + 1] = args.format .. '=' .. args.formatfile
else
ret[#ret + 1] = args.format
end
end
-- Border
if yesno(args.border) then
ret[#ret + 1] = 'border'
end
addPositional('location')
addPositional('alignment')
addPositional('size')
addNamed('upright')
addNamed('link')
addNamed('alt')
addNamed('page')
addNamed('class')
addNamed('lang')
addNamed('start')
addNamed('end')
addNamed('thumbtime')
addPositional('caption')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:File link'
})
if not origArgs.file then
error("'file' parameter missing from [[Template:File link]]", 0)
end
-- Copy the arguments that were passed to a new table to avoid looking up
-- every possible parameter in the frame object.
local args = {}
for k, v in pairs(origArgs) do
-- Make _BLANK a special argument to add a blank parameter. For use in
-- conditional templates etc. it is useful for blank arguments to be
-- ignored, but we still need a way to specify them so that we can do
-- things like [[File:Example.png|link=]].
if v == '_BLANK' then
v = ''
end
args[k] = v
end
return p._main(args)
end
return p
66925f088d11530f2482f04181a3baaaa0ad3d0c
Module:Format link
828
196
388
387
2023-01-16T18:15:35Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Format link
--
-- Makes a wikilink from the given link and display values. Links are escaped
-- with colons if necessary, and links to sections are detected and displayed
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- the {{format link}} template.
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local mError -- lazily initialise [[Module:Error]]
local yesno -- lazily initialise [[Module:Yesno]]
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
local function maybeItalicize(s, shouldItalicize)
-- Italicize s if s is a string and the shouldItalicize parameter is true.
if s and shouldItalicize then
return '<i>' .. s .. '</i>'
else
return s
end
end
local function parseLink(link)
-- Parse a link and return a table with the link's components.
-- These components are:
-- - link: the link, stripped of any initial colon (always present)
-- - page: the page name (always present)
-- - section: the page name (may be nil)
-- - display: the display text, if manually entered after a pipe (may be nil)
link = removeInitialColon(link)
-- Find whether a faux display value has been added with the {{!}} magic
-- word.
local prePipe, display = link:match('^(.-)|(.*)$')
link = prePipe or link
-- Find the page, if it exists.
-- For links like [[#Bar]], the page will be nil.
local preHash, postHash = link:match('^(.-)#(.*)$')
local page
if not preHash then
-- We have a link like [[Foo]].
page = link
elseif preHash ~= '' then
-- We have a link like [[Foo#Bar]].
page = preHash
end
-- Find the section, if it exists.
local section
if postHash and postHash ~= '' then
section = postHash
end
return {
link = link,
page = page,
section = section,
display = display,
}
end
local function formatDisplay(parsed, options)
-- Formats a display string based on a parsed link table (matching the
-- output of parseLink) and an options table (matching the input options for
-- _formatLink).
local page = maybeItalicize(parsed.page, options.italicizePage)
local section = maybeItalicize(parsed.section, options.italicizeSection)
if (not section) then
return page
elseif (not page) then
return mw.ustring.format('§ %s', section)
else
return mw.ustring.format('%s § %s', page, section)
end
end
local function missingArgError(target)
mError = require('Module:Error')
return mError.error{message =
'Error: no link or target specified! ([[' .. target .. '#Errors|help]])'
}
end
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.formatLink(frame)
-- The formatLink export function, for use in templates.
yesno = require('Module:Yesno')
local args = getArgs(frame)
local link = args[1] or args.link
local target = args[3] or args.target
if not (link or target) then
return missingArgError('Template:Format link')
end
return p._formatLink{
link = link,
display = args[2] or args.display,
target = target,
italicizePage = yesno(args.italicizepage),
italicizeSection = yesno(args.italicizesection),
categorizeMissing = args.categorizemissing
}
end
function p._formatLink(options)
-- The formatLink export function, for use in modules.
checkType('_formatLink', 1, options, 'table')
local function check(key, expectedType) --for brevity
checkTypeForNamedArg(
'_formatLink', key, options[key], expectedType or 'string', true
)
end
check('link')
check('display')
check('target')
check('italicizePage', 'boolean')
check('italicizeSection', 'boolean')
check('categorizeMissing')
-- Normalize link and target and check that at least one is present
if options.link == '' then options.link = nil end
if options.target == '' then options.target = nil end
if not (options.link or options.target) then
return missingArgError('Module:Format link')
end
local parsed = parseLink(options.link)
local display = options.display or parsed.display
local catMissing = options.categorizeMissing
local category = ''
-- Find the display text
if not display then display = formatDisplay(parsed, options) end
-- Handle the target option if present
if options.target then
local parsedTarget = parseLink(options.target)
parsed.link = parsedTarget.link
parsed.page = parsedTarget.page
end
-- Test if page exists if a diagnostic category is specified
if catMissing and (mw.ustring.len(catMissing) > 0) then
local title = nil
if parsed.page then title = mw.title.new(parsed.page) end
if title and (not title.isExternal) then
local success, exists = pcall(function() return title.exists end)
if success and not exists then
category = mw.ustring.format('[[Category:%s]]', catMissing)
end
end
end
-- Format the result as a link
if parsed.link == display then
return mw.ustring.format('[[:%s]]%s', parsed.link, category)
else
return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category)
end
end
--------------------------------------------------------------------------------
-- Derived convenience functions
--------------------------------------------------------------------------------
function p.formatPages(options, pages)
-- Formats an array of pages using formatLink and the given options table,
-- and returns it as an array. Nil values are not allowed.
local ret = {}
for i, page in ipairs(pages) do
ret[i] = p._formatLink{
link = page,
categorizeMissing = options.categorizeMissing,
italicizePage = options.italicizePage,
italicizeSection = options.italicizeSection
}
end
return ret
end
return p
1253bdd2683ee4badc33856bfd5499b09a7dca1f
Module:Hatnote
828
70
390
139
2023-01-16T18:15:35Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[w:Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]].
local H = require('Dev:Hatnote')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]]
-- The last line produces the output for the template
return H
d52966e186d4771ee7844be7f402467c51644349
Module:Hatnote/styles.css
828
197
392
391
2023-01-16T18:15:36Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
44680ffd6e888866df2cdfa0341af9c7b97da94c
Module:Hatnote list
828
198
394
393
2023-01-16T18:15:36Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote list --
-- --
-- This module produces and formats lists for use in hatnotes. In particular, --
-- it implements the for-see list, i.e. lists of "For X, see Y" statements, --
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced --
-- are andList & orList helpers for formatting lists with those conjunctions. --
--------------------------------------------------------------------------------
local mArguments --initialize lazily
local mFormatLink = require('Module:Format link')
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
--------------------------------------------------------------------------------
-- List stringification helper functions
--
-- These functions are used for stringifying lists, usually page lists inside
-- the "Y" portion of "For X, see Y" for-see items.
--------------------------------------------------------------------------------
--default options table used across the list stringification functions
local stringifyListDefaultOptions = {
conjunction = "and",
separator = ",",
altSeparator = ";",
space = " ",
formatted = false
}
--Searches display text only
local function searchDisp(haystack, needle)
return string.find(
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle
)
end
-- Stringifies a list generically; probably shouldn't be used directly
local function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
if #list == 0 then return nil end
checkType("stringifyList", 2, options, "table", true)
options = options or {}
for k, v in pairs(stringifyListDefaultOptions) do
if options[k] == nil then options[k] = v end
end
local s = options.space
-- Format the list if requested
if options.formatted then
list = mFormatLink.formatPages(
{categorizeMissing = mHatnote.missingTargetCat}, list
)
end
-- Set the separator; if any item contains it, use the alternate separator
local separator = options.separator
for k, v in pairs(list) do
if searchDisp(v, separator) then
separator = options.altSeparator
break
end
end
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"
local conjunction = s .. options.conjunction .. s
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then
conjunction = separator .. conjunction
end
-- Return the formatted string
return mw.text.listToText(list, separator .. s, conjunction)
end
--DRY function
function p.conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
end
-- Stringifies lists with "and" or "or"
function p.andList (...) return p.conjList("and", ...) end
function p.orList (...) return p.conjList("or", ...) end
--------------------------------------------------------------------------------
-- For see
--
-- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the
-- {{about}} and {{redirect}} templates and their variants.
--------------------------------------------------------------------------------
--default options table used across the forSee family of functions
local forSeeDefaultOptions = {
andKeyword = 'and',
title = mw.title.getCurrentTitle().text,
otherText = 'other uses',
forSeeForm = 'For %s, see %s.',
}
--Collapses duplicate punctuation
local function punctuationCollapse (text)
local replacements = {
["%.%.$"] = ".",
["%?%.$"] = "?",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "?]]",
["%!%]%]%.$"] = "!]]"
}
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end
return text
end
-- Structures arguments into a table for stringification, & options
function p.forSeeArgsToTable (args, from, options)
-- Type-checks and defaults
checkType("forSeeArgsToTable", 1, args, 'table')
checkType("forSeeArgsToTable", 2, from, 'number', true)
from = from or 1
checkType("forSeeArgsToTable", 3, options, 'table', true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- maxArg's gotten manually because getArgs() and table.maxn aren't friends
local maxArg = 0
for k, v in pairs(args) do
if type(k) == 'number' and k > maxArg then maxArg = k end
end
-- Structure the data out from the parameter list:
-- * forTable is the wrapper table, with forRow rows
-- * Rows are tables of a "use" string & a "pages" table of pagename strings
-- * Blanks are left empty for defaulting elsewhere, but can terminate list
local forTable = {}
local i = from
local terminated = false
-- If there is extra text, and no arguments are given, give nil value
-- to not produce default of "For other uses, see foo (disambiguation)"
if options.extratext and i > maxArg then return nil end
-- Loop to generate rows
repeat
-- New empty row
local forRow = {}
-- On blank use, assume list's ended & break at end of this loop
forRow.use = args[i]
if not args[i] then terminated = true end
-- New empty list of pages
forRow.pages = {}
-- Insert first pages item if present
table.insert(forRow.pages, args[i + 1])
-- If the param after next is "and", do inner loop to collect params
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3}
while args[i + 2] == options.andKeyword do
if args[i + 3] then
table.insert(forRow.pages, args[i + 3])
end
-- Increment to next "and"
i = i + 2
end
-- Increment to next use
i = i + 2
-- Append the row
table.insert(forTable, forRow)
until terminated or i > maxArg
return forTable
end
-- Stringifies a table as formatted by forSeeArgsToTable
function p.forSeeTableToString (forSeeTable, options)
-- Type-checks and defaults
checkType("forSeeTableToString", 1, forSeeTable, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Stringify each for-see item into a list
local strList = {}
if forSeeTable then
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local pagesStr =
p.andList(v.pages, true) or
mFormatLink._formatLink{
categorizeMissing = mHatnote.missingTargetCat,
link = mHatnote.disambiguate(options.title)
}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
table.insert(strList, forSeeStr)
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
return table.concat(strList, ' ')
end
-- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps
-- but not blank/whitespace values. Ignores named args and args < "from".
function p._forSee (args, from, options)
local forSeeTable = p.forSeeArgsToTable(args, from, options)
return p.forSeeTableToString(forSeeTable, options)
end
-- As _forSee, but uses the frame.
function p.forSee (frame, from, options)
mArguments = require('Module:Arguments')
return p._forSee(mArguments.getArgs(frame), from, options)
end
return p
d0828422b1aa0d0d0092d699d059c9e882260398
Module:Navbar/styles.css
828
201
400
399
2023-01-16T18:15:37Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp|small=yes}} */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar-collapse {
float: left;
text-align: left;
}
.navbar-boxtext {
word-spacing: 0;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
line-height: inherit;
}
.navbar-brackets::before {
margin-right: -0.125em;
content: '[ ';
}
.navbar-brackets::after {
margin-left: -0.125em;
content: ' ]';
}
.navbar li {
word-spacing: -0.125em;
}
.navbar a > span,
.navbar a > abbr {
text-decoration: inherit;
}
.navbar-mini abbr {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
.navbar-ct-full {
font-size: 114%;
margin: 0 7em;
}
.navbar-ct-mini {
font-size: 114%;
margin: 0 4em;
}
9d4056f949b4f0b159e3d40dfb1a5f01e72f9571
Module:Protection banner
828
202
402
401
2023-01-16T18:15:38Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module implements {{pp-meta}} and its daughter templates such as
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.
-- Initialise necessary modules.
require('strict')
local makeFileLink = require('Module:File link')._main
local effectiveProtectionLevel = require('Module:Effective protection level')._main
local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main
local yesno = require('Module:Yesno')
-- Lazily initialise modules and objects we don't always need.
local getArgs, makeMessageBox, lang
-- Set constants.
local CONFIG_MODULE = 'Module:Protection banner/config'
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function makeCategoryLink(cat, sort)
if cat then
return string.format(
'[[%s:%s|%s]]',
mw.site.namespaces[14].name,
cat,
sort
)
end
end
-- Validation function for the expiry and the protection date
local function validateDate(dateString, dateType)
if not lang then
lang = mw.language.getContentLanguage()
end
local success, result = pcall(lang.formatDate, lang, 'U', dateString)
if success then
result = tonumber(result)
if result then
return result
end
end
error(string.format(
'invalid %s: %s',
dateType,
tostring(dateString)
), 4)
end
local function makeFullUrl(page, query, display)
return string.format(
'[%s %s]',
tostring(mw.uri.fullUrl(page, query)),
display
)
end
-- Given a directed graph formatted as node -> table of direct successors,
-- get a table of all nodes reachable from a given node (though always
-- including the given node).
local function getReachableNodes(graph, start)
local toWalk, retval = {[start] = true}, {}
while true do
-- Can't use pairs() since we're adding and removing things as we're iterating
local k = next(toWalk) -- This always gets the "first" key
if k == nil then
return retval
end
toWalk[k] = nil
retval[k] = true
for _,v in ipairs(graph[k]) do
if not retval[v] then
toWalk[v] = true
end
end
end
end
--------------------------------------------------------------------------------
-- Protection class
--------------------------------------------------------------------------------
local Protection = {}
Protection.__index = Protection
Protection.supportedActions = {
edit = true,
move = true,
autoreview = true,
upload = true
}
Protection.bannerConfigFields = {
'text',
'explanation',
'tooltip',
'alt',
'link',
'image'
}
function Protection.new(args, cfg, title)
local obj = {}
obj._cfg = cfg
obj.title = title or mw.title.getCurrentTitle()
-- Set action
if not args.action then
obj.action = 'edit'
elseif Protection.supportedActions[args.action] then
obj.action = args.action
else
error(string.format(
'invalid action: %s',
tostring(args.action)
), 3)
end
-- Set level
obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)
if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then
-- Users need to be autoconfirmed to move pages anyway, so treat
-- semi-move-protected pages as unprotected.
obj.level = '*'
end
-- Set expiry
local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)
if effectiveExpiry == 'infinity' then
obj.expiry = 'indef'
elseif effectiveExpiry ~= 'unknown' then
obj.expiry = validateDate(effectiveExpiry, 'expiry date')
end
-- Set reason
if args[1] then
obj.reason = mw.ustring.lower(args[1])
if obj.reason:find('|') then
error('reasons cannot contain the pipe character ("|")', 3)
end
end
-- Set protection date
if args.date then
obj.protectionDate = validateDate(args.date, 'protection date')
end
-- Set banner config
do
obj.bannerConfig = {}
local configTables = {}
if cfg.banners[obj.action] then
configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]
end
if cfg.defaultBanners[obj.action] then
configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]
configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default
end
configTables[#configTables + 1] = cfg.masterBanner
for i, field in ipairs(Protection.bannerConfigFields) do
for j, t in ipairs(configTables) do
if t[field] then
obj.bannerConfig[field] = t[field]
break
end
end
end
end
return setmetatable(obj, Protection)
end
function Protection:isUserScript()
-- Whether the page is a user JavaScript or CSS page.
local title = self.title
return title.namespace == 2 and (
title.contentModel == 'javascript' or title.contentModel == 'css'
)
end
function Protection:isProtected()
return self.level ~= '*'
end
function Protection:shouldShowLock()
-- Whether we should output a banner/padlock
return self:isProtected() and not self:isUserScript()
end
-- Whether this page needs a protection category.
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock
function Protection:isTemporary()
return type(self.expiry) == 'number'
end
function Protection:makeProtectionCategory()
if not self:shouldHaveProtectionCategory() then
return ''
end
local cfg = self._cfg
local title = self.title
-- Get the expiry key fragment.
local expiryFragment
if self.expiry == 'indef' then
expiryFragment = self.expiry
elseif type(self.expiry) == 'number' then
expiryFragment = 'temp'
end
-- Get the namespace key fragment.
local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]
if not namespaceFragment and title.namespace % 2 == 1 then
namespaceFragment = 'talk'
end
-- Define the order that key fragments are tested in. This is done with an
-- array of tables containing the value to be tested, along with its
-- position in the cfg.protectionCategories table.
local order = {
{val = expiryFragment, keypos = 1},
{val = namespaceFragment, keypos = 2},
{val = self.reason, keypos = 3},
{val = self.level, keypos = 4},
{val = self.action, keypos = 5}
}
--[[
-- The old protection templates used an ad-hoc protection category system,
-- with some templates prioritising namespaces in their categories, and
-- others prioritising the protection reason. To emulate this in this module
-- we use the config table cfg.reasonsWithNamespacePriority to set the
-- reasons for which namespaces have priority over protection reason.
-- If we are dealing with one of those reasons, move the namespace table to
-- the end of the order table, i.e. give it highest priority. If not, the
-- reason should have highest priority, so move that to the end of the table
-- instead.
--]]
table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))
--[[
-- Define the attempt order. Inactive subtables (subtables with nil "value"
-- fields) are moved to the end, where they will later be given the key
-- "all". This is to cut down on the number of table lookups in
-- cfg.protectionCategories, which grows exponentially with the number of
-- non-nil keys. We keep track of the number of active subtables with the
-- noActive parameter.
--]]
local noActive, attemptOrder
do
local active, inactive = {}, {}
for i, t in ipairs(order) do
if t.val then
active[#active + 1] = t
else
inactive[#inactive + 1] = t
end
end
noActive = #active
attemptOrder = active
for i, t in ipairs(inactive) do
attemptOrder[#attemptOrder + 1] = t
end
end
--[[
-- Check increasingly generic key combinations until we find a match. If a
-- specific category exists for the combination of key fragments we are
-- given, that match will be found first. If not, we keep trying different
-- key fragment combinations until we match using the key
-- "all-all-all-all-all".
--
-- To generate the keys, we index the key subtables using a binary matrix
-- with indexes i and j. j is only calculated up to the number of active
-- subtables. For example, if there were three active subtables, the matrix
-- would look like this, with 0 corresponding to the key fragment "all", and
-- 1 corresponding to other key fragments.
--
-- j 1 2 3
-- i
-- 1 1 1 1
-- 2 0 1 1
-- 3 1 0 1
-- 4 0 0 1
-- 5 1 1 0
-- 6 0 1 0
-- 7 1 0 0
-- 8 0 0 0
--
-- Values of j higher than the number of active subtables are set
-- to the string "all".
--
-- A key for cfg.protectionCategories is constructed for each value of i.
-- The position of the value in the key is determined by the keypos field in
-- each subtable.
--]]
local cats = cfg.protectionCategories
for i = 1, 2^noActive do
local key = {}
for j, t in ipairs(attemptOrder) do
if j > noActive then
key[t.keypos] = 'all'
else
local quotient = i / 2 ^ (j - 1)
quotient = math.ceil(quotient)
if quotient % 2 == 1 then
key[t.keypos] = t.val
else
key[t.keypos] = 'all'
end
end
end
key = table.concat(key, '|')
local attempt = cats[key]
if attempt then
return makeCategoryLink(attempt, title.text)
end
end
return ''
end
function Protection:isIncorrect()
local expiry = self.expiry
return not self:shouldHaveProtectionCategory()
or type(expiry) == 'number' and expiry < os.time()
end
function Protection:isTemplateProtectedNonTemplate()
local action, namespace = self.action, self.title.namespace
return self.level == 'templateeditor'
and (
(action ~= 'edit' and action ~= 'move')
or (namespace ~= 10 and namespace ~= 828)
)
end
function Protection:makeCategoryLinks()
local msg = self._cfg.msg
local ret = {self:makeProtectionCategory()}
if self:isIncorrect() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-incorrect'],
self.title.text
)
end
if self:isTemplateProtectedNonTemplate() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-template'],
self.title.text
)
end
return table.concat(ret)
end
--------------------------------------------------------------------------------
-- Blurb class
--------------------------------------------------------------------------------
local Blurb = {}
Blurb.__index = Blurb
Blurb.bannerTextFields = {
text = true,
explanation = true,
tooltip = true,
alt = true,
link = true
}
function Blurb.new(protectionObj, args, cfg)
return setmetatable({
_cfg = cfg,
_protectionObj = protectionObj,
_args = args
}, Blurb)
end
-- Private methods --
function Blurb:_formatDate(num)
-- Formats a Unix timestamp into dd Month, YYYY format.
lang = lang or mw.language.getContentLanguage()
local success, date = pcall(
lang.formatDate,
lang,
self._cfg.msg['expiry-date-format'] or 'j F Y',
'@' .. tostring(num)
)
if success then
return date
end
end
function Blurb:_getExpandedMessage(msgKey)
return self:_substituteParameters(self._cfg.msg[msgKey])
end
function Blurb:_substituteParameters(msg)
if not self._params then
local parameterFuncs = {}
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter
parameterFuncs.EXPIRY = self._makeExpiryParameter
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter
parameterFuncs.IMAGELINK = self._makeImageLinkParameter
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter
parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter
parameterFuncs.PAGETYPE = self._makePagetypeParameter
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter
parameterFuncs.TALKPAGE = self._makeTalkPageParameter
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter
parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter
parameterFuncs.VANDAL = self._makeVandalTemplateParameter
self._params = setmetatable({}, {
__index = function (t, k)
local param
if parameterFuncs[k] then
param = parameterFuncs[k](self)
end
param = param or ''
t[k] = param
return param
end
})
end
msg = msg:gsub('${(%u+)}', self._params)
return msg
end
function Blurb:_makeCurrentVersionParameter()
-- A link to the page history or the move log, depending on the kind of
-- protection.
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'move' then
-- We need the move log link.
return makeFullUrl(
'Special:Log',
{type = 'move', page = pagename},
self:_getExpandedMessage('current-version-move-display')
)
else
-- We need the history link.
return makeFullUrl(
pagename,
{action = 'history'},
self:_getExpandedMessage('current-version-edit-display')
)
end
end
function Blurb:_makeEditRequestParameter()
local mEditRequest = require('Module:Submit an edit request')
local action = self._protectionObj.action
local level = self._protectionObj.level
-- Get the edit request type.
local requestType
if action == 'edit' then
if level == 'autoconfirmed' then
requestType = 'semi'
elseif level == 'extendedconfirmed' then
requestType = 'extended'
elseif level == 'templateeditor' then
requestType = 'template'
end
end
requestType = requestType or 'full'
-- Get the display value.
local display = self:_getExpandedMessage('edit-request-display')
return mEditRequest._link{type = requestType, display = display}
end
function Blurb:_makeExpiryParameter()
local expiry = self._protectionObj.expiry
if type(expiry) == 'number' then
return self:_formatDate(expiry)
else
return expiry
end
end
function Blurb:_makeExplanationBlurbParameter()
-- Cover special cases first.
if self._protectionObj.title.namespace == 8 then
-- MediaWiki namespace
return self:_getExpandedMessage('explanation-blurb-nounprotect')
end
-- Get explanation blurb table keys
local action = self._protectionObj.action
local level = self._protectionObj.level
local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject'
-- Find the message in the explanation blurb table and substitute any
-- parameters.
local explanations = self._cfg.explanationBlurbs
local msg
if explanations[action][level] and explanations[action][level][talkKey] then
msg = explanations[action][level][talkKey]
elseif explanations[action][level] and explanations[action][level].default then
msg = explanations[action][level].default
elseif explanations[action].default and explanations[action].default[talkKey] then
msg = explanations[action].default[talkKey]
elseif explanations[action].default and explanations[action].default.default then
msg = explanations[action].default.default
else
error(string.format(
'could not find explanation blurb for action "%s", level "%s" and talk key "%s"',
action,
level,
talkKey
), 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeImageLinkParameter()
local imageLinks = self._cfg.imageLinks
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if imageLinks[action][level] then
msg = imageLinks[action][level]
elseif imageLinks[action].default then
msg = imageLinks[action].default
else
msg = imageLinks.edit.default
end
return self:_substituteParameters(msg)
end
function Blurb:_makeIntroBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-blurb-expiry')
else
return self:_getExpandedMessage('intro-blurb-noexpiry')
end
end
function Blurb:_makeIntroFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-fragment-expiry')
else
return self:_getExpandedMessage('intro-fragment-noexpiry')
end
end
function Blurb:_makePagetypeParameter()
local pagetypes = self._cfg.pagetypes
return pagetypes[self._protectionObj.title.namespace]
or pagetypes.default
or error('no default pagetype defined', 8)
end
function Blurb:_makeProtectionBlurbParameter()
local protectionBlurbs = self._cfg.protectionBlurbs
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionBlurbs[action][level] then
msg = protectionBlurbs[action][level]
elseif protectionBlurbs[action].default then
msg = protectionBlurbs[action].default
elseif protectionBlurbs.edit.default then
msg = protectionBlurbs.edit.default
else
error('no protection blurb defined for protectionBlurbs.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionDateParameter()
local protectionDate = self._protectionObj.protectionDate
if type(protectionDate) == 'number' then
return self:_formatDate(protectionDate)
else
return protectionDate
end
end
function Blurb:_makeProtectionLevelParameter()
local protectionLevels = self._cfg.protectionLevels
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionLevels[action][level] then
msg = protectionLevels[action][level]
elseif protectionLevels[action].default then
msg = protectionLevels[action].default
elseif protectionLevels.edit.default then
msg = protectionLevels.edit.default
else
error('no protection level defined for protectionLevels.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionLogParameter()
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'autoreview' then
-- We need the pending changes log.
return makeFullUrl(
'Special:Log',
{type = 'stable', page = pagename},
self:_getExpandedMessage('pc-log-display')
)
else
-- We need the protection log.
return makeFullUrl(
'Special:Log',
{type = 'protect', page = pagename},
self:_getExpandedMessage('protection-log-display')
)
end
end
function Blurb:_makeTalkPageParameter()
return string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[self._protectionObj.title.namespace].talk.name,
self._protectionObj.title.text,
self._args.section or 'top',
self:_getExpandedMessage('talk-page-link-display')
)
end
function Blurb:_makeTooltipBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-blurb-expiry')
else
return self:_getExpandedMessage('tooltip-blurb-noexpiry')
end
end
function Blurb:_makeTooltipFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-fragment-expiry')
else
return self:_getExpandedMessage('tooltip-fragment-noexpiry')
end
end
function Blurb:_makeVandalTemplateParameter()
return mw.getCurrentFrame():expandTemplate{
title="vandal-m",
args={self._args.user or self._protectionObj.title.baseText}
}
end
-- Public methods --
function Blurb:makeBannerText(key)
-- Validate input.
if not key or not Blurb.bannerTextFields[key] then
error(string.format(
'"%s" is not a valid banner config field',
tostring(key)
), 2)
end
-- Generate the text.
local msg = self._protectionObj.bannerConfig[key]
if type(msg) == 'string' then
return self:_substituteParameters(msg)
elseif type(msg) == 'function' then
msg = msg(self._protectionObj, self._args)
if type(msg) ~= 'string' then
error(string.format(
'bad output from banner config function with key "%s"'
.. ' (expected string, got %s)',
tostring(key),
type(msg)
), 4)
end
return self:_substituteParameters(msg)
end
end
--------------------------------------------------------------------------------
-- BannerTemplate class
--------------------------------------------------------------------------------
local BannerTemplate = {}
BannerTemplate.__index = BannerTemplate
function BannerTemplate.new(protectionObj, cfg)
local obj = {}
obj._cfg = cfg
-- Set the image filename.
local imageFilename = protectionObj.bannerConfig.image
if imageFilename then
obj._imageFilename = imageFilename
else
-- If an image filename isn't specified explicitly in the banner config,
-- generate it from the protection status and the namespace.
local action = protectionObj.action
local level = protectionObj.level
local namespace = protectionObj.title.namespace
local reason = protectionObj.reason
-- Deal with special cases first.
if (
namespace == 10
or namespace == 828
or reason and obj._cfg.indefImageReasons[reason]
)
and action == 'edit'
and level == 'sysop'
and not protectionObj:isTemporary()
then
-- Fully protected modules and templates get the special red "indef"
-- padlock.
obj._imageFilename = obj._cfg.msg['image-filename-indef']
else
-- Deal with regular protection types.
local images = obj._cfg.images
if images[action] then
if images[action][level] then
obj._imageFilename = images[action][level]
elseif images[action].default then
obj._imageFilename = images[action].default
end
end
end
end
return setmetatable(obj, BannerTemplate)
end
function BannerTemplate:renderImage()
local filename = self._imageFilename
or self._cfg.msg['image-filename-default']
or 'Transparent.gif'
return makeFileLink{
file = filename,
size = (self.imageWidth or 20) .. 'px',
alt = self._imageAlt,
link = self._imageLink,
caption = self.imageCaption
}
end
--------------------------------------------------------------------------------
-- Banner class
--------------------------------------------------------------------------------
local Banner = setmetatable({}, BannerTemplate)
Banner.__index = Banner
function Banner.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 40
obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip.
obj._reasonText = blurbObj:makeBannerText('text')
obj._explanationText = blurbObj:makeBannerText('explanation')
obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.
return setmetatable(obj, Banner)
end
function Banner:__tostring()
-- Renders the banner.
makeMessageBox = makeMessageBox or require('Module:Message box').main
local reasonText = self._reasonText or error('no reason text set', 2)
local explanationText = self._explanationText
local mbargs = {
page = self._page,
type = 'protection',
image = self:renderImage(),
text = string.format(
"'''%s'''%s",
reasonText,
explanationText and '<br />' .. explanationText or ''
)
}
return makeMessageBox('mbox', mbargs)
end
--------------------------------------------------------------------------------
-- Padlock class
--------------------------------------------------------------------------------
local Padlock = setmetatable({}, BannerTemplate)
Padlock.__index = Padlock
function Padlock.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 20
obj.imageCaption = blurbObj:makeBannerText('tooltip')
obj._imageAlt = blurbObj:makeBannerText('alt')
obj._imageLink = blurbObj:makeBannerText('link')
obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]
or cfg.padlockIndicatorNames.default
or 'pp-default'
return setmetatable(obj, Padlock)
end
function Padlock:__tostring()
local frame = mw.getCurrentFrame()
-- The nowiki tag helps prevent whitespace at the top of articles.
return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{
name = 'indicator',
args = {name = self._indicatorName},
content = self:renderImage()
}
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- This is used for testing purposes.
return {
Protection = Protection,
Blurb = Blurb,
BannerTemplate = BannerTemplate,
Banner = Banner,
Padlock = Padlock,
}
end
function p._main(args, cfg, title)
args = args or {}
cfg = cfg or require(CONFIG_MODULE)
local protectionObj = Protection.new(args, cfg, title)
local ret = {}
-- If a page's edit protection is equally or more restrictive than its
-- protection from some other action, then don't bother displaying anything
-- for the other action (except categories).
if not yesno(args.catonly) and (protectionObj.action == 'edit' or
args.demolevel or
not getReachableNodes(
cfg.hierarchy,
protectionObj.level
)[effectiveProtectionLevel('edit', protectionObj.title)])
then
-- Initialise the blurb object
local blurbObj = Blurb.new(protectionObj, args, cfg)
-- Render the banner
if protectionObj:shouldShowLock() then
ret[#ret + 1] = tostring(
(yesno(args.small) and Padlock or Banner)
.new(protectionObj, blurbObj, cfg)
)
end
end
-- Render the categories
if yesno(args.category) ~= false then
ret[#ret + 1] = protectionObj:makeCategoryLinks()
end
return table.concat(ret)
end
function p.main(frame, cfg)
cfg = cfg or require(CONFIG_MODULE)
-- Find default args, if any.
local parent = frame.getParent and frame:getParent()
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]
-- Find user args, and use the parent frame if we are being called from a
-- wrapper template.
getArgs = getArgs or require('Module:Arguments').getArgs
local userArgs = getArgs(frame, {
parentOnly = defaultArgs,
frameOnly = not defaultArgs
})
-- Build the args table. User-specified args overwrite default args.
local args = {}
for k, v in pairs(defaultArgs or {}) do
args[k] = v
end
for k, v in pairs(userArgs) do
args[k] = v
end
return p._main(args, cfg)
end
return p
894f0884d4c2da1ce19d385b96f59af654b0946a
Module:Protection banner/config
828
203
404
403
2023-01-16T18:15:38Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|'
.. 'protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',
},
move = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
.. ' from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully-protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Pp'] = {},
['Template:Pp-extended'] = {'ecp'},
['Template:Pp-blp'] = {'blp'},
-- we don't need Template:Pp-create
['Template:Pp-dispute'] = {'dispute'},
['Template:Pp-main-page'] = {'mainpage'},
['Template:Pp-move'] = {action = 'move', catonly = 'yes'},
['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'},
-- we don't need Template:Pp-move-indef
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Pp-office'] = {'office'},
['Template:Pp-office-dmca'] = {'dmca'},
['Template:Pp-pc'] = {action = 'autoreview', small = true},
['Template:Pp-pc1'] = {action = 'autoreview', small = true},
['Template:Pp-reset'] = {'reset'},
['Template:Pp-semi-indef'] = {small = true},
['Template:Pp-sock'] = {'sock'},
['Template:Pp-template'] = {'template', small = true},
['Template:Pp-upload'] = {action = 'upload'},
['Template:Pp-usertalk'] = {'usertalk'},
['Template:Pp-vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
59c408f72ce81e080cce79518231e85981ebcf3b
Module:Sidebar/configuration
828
205
408
407
2023-01-16T18:15:39Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
return {
i18n = {
child_yes = 'yes',
float_none = 'none',
float_left = 'left',
wrap_true = 'true',
navbar_none = 'none',
navbar_off = 'off',
default_list_title = 'List',
title_not_to_add_navbar = 'Template:Sidebar',
collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists',
templatestyles = 'Module:Sidebar/styles.css',
category = {
child = '[[Category:Pages using sidebar with the child parameter]]',
conversion = '[[Category:Sidebars with styles needing conversion]]'
},
pattern = {
collapse_sandbox = '/sandbox$',
sandbox = '/sandbox$',
subgroup = 'sidebar%-subgroup',
style_conversion = 'style$',
uncategorized_conversion_titles = {
'/[Ss]andbox',
'/[Tt]estcases',
'/[Dd]oc$'
}
},
class = {
sidebar = 'sidebar',
subgroup = 'sidebar-subgroup',
collapse = 'sidebar-collapse',
float_none = 'sidebar-none',
float_left = 'sidebar-left',
wraplinks = 'nowraplinks',
outer_title = 'sidebar-outer-title',
top_image = 'sidebar-top-image',
top_caption = 'sidebar-top-caption',
pretitle = 'sidebar-pretitle',
pretitle_with_top_image = 'sidebar-pretitle-with-top-image',
title = 'sidebar-title',
title_with_pretitle = 'sidebar-title-with-pretitle',
image = 'sidebar-image',
caption = 'sidebar-caption',
above = 'sidebar-above',
heading = 'sidebar-heading',
content = 'sidebar-content',
content_with_subgroup = 'sidebar-content-with-subgroup',
below = 'sidebar-below',
navbar = 'sidebar-navbar',
list = 'sidebar-list',
list_title = 'sidebar-list-title',
list_title_centered = 'sidebar-list-title-c',
list_content = 'sidebar-list-content'
}
}
}
069f50eb6a0f1833c7d37d07016b05305b5ed00c
Module:Sidebar/styles.css
828
206
410
409
2023-01-16T18:15:39Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp-template}} */
/* TODO: Invert width design to be "mobile first" */
.sidebar {
/* TODO: Ask if we should have max-width 22em instead */
width: 22em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
/* @noflip */
margin: 0.5em 0 1em 1em;
background: #f8f9fa;
border: 1px solid #aaa;
padding: 0.2em;
text-align: center;
line-height: 1.4em;
font-size: 88%;
border-collapse: collapse;
/* Timeless has display: none on .nomobile at mobile resolutions, so we
* unhide it with display: table and let precedence and proximity win.
*/
display: table;
}
/* Unfortunately, so does Minerva desktop, except Minerva drops an
* !important on the declaration. So we have to be mean for Minerva users.
* Mobile removes the element entirely with `wgMFRemovableClasses` in
* https://github.com/wikimedia/operations-mediawiki-config/blob/master/
wmf-config/InitialiseSettings.php#L16992
* which is why displaying it categorically with display: table works.
* We don't really want to expose the generic user in the wild on mobile to have
* to deal with sidebars. (Maybe the ones with collapsible lists, so that
* might be an improvement. That is blocked on [[:phab:T111565]].)
*/
body.skin-minerva .sidebar {
display: table !important;
/* also, minerva is way too aggressive about other stylings on tables.
* TODO remove when this template gets moved to a div. plans on talk page.
* We always float right on Minerva because that's a lot of extra CSS
* otherwise. */
float: right !important;
margin: 0.5em 0 1em 1em !important;
}
.sidebar-subgroup {
width: 100%;
margin: 0;
border-spacing: 0;
}
.sidebar-left {
/* @noflip */
float: left;
/* @noflip */
clear: left;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-none {
float: none;
clear: both;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-outer-title {
padding: 0 0.4em 0.2em;
font-size: 125%;
line-height: 1.2em;
font-weight: bold;
}
.sidebar-top-image {
padding: 0.4em;
}
.sidebar-top-caption,
.sidebar-pretitle-with-top-image,
.sidebar-caption {
padding: 0.2em 0.4em 0;
line-height: 1.2em;
}
.sidebar-pretitle {
padding: 0.4em 0.4em 0;
line-height: 1.2em;
}
.sidebar-title,
.sidebar-title-with-pretitle {
padding: 0.2em 0.8em;
font-size: 145%;
line-height: 1.2em;
}
.sidebar-title-with-pretitle {
padding: 0.1em 0.4em;
}
.sidebar-image {
padding: 0.2em 0.4em 0.4em;
}
.sidebar-heading {
padding: 0.1em 0.4em;
}
.sidebar-content {
padding: 0 0.5em 0.4em;
}
.sidebar-content-with-subgroup {
padding: 0.1em 0.4em 0.2em;
}
.sidebar-above,
.sidebar-below {
padding: 0.3em 0.8em;
font-weight: bold;
}
.sidebar-collapse .sidebar-above,
.sidebar-collapse .sidebar-below {
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.sidebar-navbar {
text-align: right;
font-size: 115%;
padding: 0 0.4em 0.4em;
}
.sidebar-list-title {
padding: 0 0.4em;
text-align: left;
font-weight: bold;
line-height: 1.6em;
font-size: 105%;
}
/* centered text with mw-collapsible headers is finicky */
.sidebar-list-title-c {
padding: 0 0.4em;
text-align: center;
margin: 0 3.3em;
}
@media (max-width: 720px) {
/* users have wide latitude to set arbitrary width and margin :(
"Super-specific" selector to prevent overriding this appearance by
lower level sidebars too */
body.mediawiki .sidebar {
width: 100% !important;
clear: both;
float: none !important; /* Remove when we div based; Minerva is dumb */
margin-left: 0 !important;
margin-right: 0 !important;
}
/* TODO: We might consider making all links wrap at small resolutions and then
* only introduce nowrap at higher resolutions. Do when we invert the media
* query.
*/
}
7d621b35a37807a103b59075851fe36201204ceb
Template:Div col
10
207
412
411
2023-01-16T18:15:40Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly><templatestyles src="Div col/styles.css"/><!--
--><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!--
-->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!--
-->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!--
-->}}><!--
-->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes
-->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!--
--></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude>
{{Documentation}}
</noinclude>
6e84133dd867d6c701e7b161878cf66665bb7eb7
Template:Div col/styles.css
10
208
414
413
2023-01-16T18:15:40Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc
Template:Div col end
10
209
416
415
2023-01-16T18:15:40Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{Documentation|Template:Div col/doc}}
</noinclude>
78088d41c21d779e3722f220fcc9773dfbbc1e4f
Template:Yesno-no
10
210
418
417
2023-01-16T18:15:41Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
1ad7b7800da1b867ead8f6ff8cef76e6201b3b56
Template:Para
10
211
420
419
2023-01-16T18:15:41Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
06006deea2ed5d552aab61b4332321ab749ae7e8
Template:Documentation
10
5
422
9
2023-01-16T18:15:41Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary"
|- style="font-size:18px;"
! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div>
|-
| ''Note: portions of the template sample may not be visible without values provided.''
|-
| View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]])
|-
| Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages.
|}
<div style="margin:0 1em;">
{{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude>
ee98b7264ecdfefae4fda4e94a64c1d0e275ee55
Module:Documentation
828
212
424
423
2023-01-16T18:15:42Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' | ') .. ')</span>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink, purgeLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
2fd7faef98df56f55eede30c4ff07b2431823ee1
Module:Documentation/config
828
213
426
425
2023-01-16T18:15:42Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
71b68ed73088f1a59d61acf06bbee9fde6677f03
Module:Documentation/styles.css
828
214
428
427
2023-01-16T18:15:43Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
Template:Sandbox other
10
215
430
429
2023-01-16T18:15:43Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
91e4ae891d6b791615152c1fbc971414961ba872
Template:Documentation subpage
10
216
432
431
2023-01-16T18:15:43Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
{{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
932915be87123dcf74687ffca846a3130a6a52af
Template:Template link with link off
10
217
434
433
2023-01-16T18:15:44Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlf}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851
Template:Tlf
10
218
436
435
2023-01-16T18:15:44Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with link off]]
{{Redirect category shell|
{{R from move}}
}}
52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf
Template:High-use
10
219
438
437
2023-01-16T18:15:44Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! -->
</noinclude>
a3322d1bd47ac03df14fa2090855cff4fede9bc7
Template:TemplateData header
10
220
440
439
2023-01-16T18:15:45Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage|based=y}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->[[Wikipedia:TemplateData|TemplateData]]}}<!--
e.o. #if:nolink; DEFAULT:
--> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
ddfbb4ae793846b96d4c06330417fa6ed4da2adc
Template:Template parameter usage
10
221
442
441
2023-01-16T18:15:45Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#switch:{{{label|}}}
|=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
|for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
}}<noinclude>
{{documentation}}
</noinclude>
b9cdd1b2e409313904f041c38562a3d6221cc017
Module:High-use
828
222
444
443
2023-01-16T18:15:45Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
function p.num(frame, count)
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 100000 then
sigfig = 3
end
-- Prepare to round to appropriate number of sigfigs
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
if percent >= 1 then
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
end
return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
local return_value = ""
if frame.args[1] == "risk" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 100000 then return_value = "risk" end
end
return return_value
end
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
-- is actually editing the page and maybe trying to update the count.
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or ''
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
local systemMessages = frame.args['system']
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), p.num(frame, count))
local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used ';
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and ("''', and " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. "'''"
end
local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.'
if infoArg then
info = info .. "<br />" .. infoArg
end
sandbox_text = info .. '<br /> To avoid major disruption' ..
(count and count >= 100000 and ' and server load' or '') ..
', any changes should be tested in the ' .. sandbox_text ..
'The tested changes can be added to this page in a single edit. '
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') ..
'hanges may be widely noticed. Test changes in the ' .. sandbox_text
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text
end
function p.main(frame)
local count = nil
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
local epilogue = ''
if frame.args['system'] and frame.args['system'] ~= '' then
image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame.args['nocat']
local categorise = (nocat == '' or not yesno(nocat))
if categorise then
epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 100000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
} .. epilogue
else
return require('Module:Message box').main('ombox', {
type = type_param,
image = image,
text = p.text(frame, count),
expiry = (frame.args["expiry"] or "")
}) .. epilogue
end
end
return p
e65a49e327a83e27b6a35ceff8dce344edee0840
Module:Transclusion count
828
223
446
445
2023-01-16T18:15:46Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
local namespace = mw.title.getCurrentTitle().namespace
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","")
elseif namespace == 10 then -- Template namespace
template = mw.title.getCurrentTitle().text
elseif namespace == 828 then -- Module namespace
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
end
-- If in template or module namespace, look up count in /data
if template ~= nil then
namespace = mw.title.new(template, "Template").namespace
if namespace == 10 or namespace == 828 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end
local index = mw.ustring.sub(mw.title.new(template).text,1,1)
local status, data = pcall(function ()
return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")))
end)
if status then
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
end
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
if arg1 and arg1 ~= '' then
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
end
return return_value
end
-- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate(frame)
local list = {}
for i = 65, 91 do
local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i)))
for name, count in pairs(data) do
table.insert(list, {mw.title.new(name, "Template").fullText, count})
end
end
table.sort(list, function(a, b)
return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2])
end)
local lang = mw.getContentLanguage();
for i = 1, #list do
list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2]))
end
return table.concat(list)
end
return p
000ef6bcbf7b66e727870b0c300c4009da300513
Module:Lua banner
828
224
448
447
2023-01-16T18:15:46Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation'] = 'Templates based on the Citation/CS1 Lua module'
}
categories['Module:Citation/CS1'] = categories['Module:Citation']
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
6e3bedcc849ff22d4f702708965c39b97d7e8585
Module:Parameter names example
828
225
450
449
2023-01-16T18:15:46Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- This module implements {{parameter names example}}.
local p = {}
local function makeParam(s)
local lb = '{'
local rb = '}'
return lb:rep(3) .. s .. rb:rep(3)
end
local function italicize(s)
return "''" .. s .. "''"
end
local function plain(s)
return s
end
function p._main(args, frame)
-- Find how we want to format the arguments to the template.
local formatFunc
if args._display == 'italics' or args._display == 'italic' then
formatFunc = italicize
elseif args._display == 'plain' then
formatFunc = plain
else
formatFunc = makeParam
end
-- Build the table of template arguments.
local targs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
targs[v] = formatFunc(v)
elseif not k:find('^_') then
targs[k] = v
end
end
targs['nocat'] = 'yes';
targs['categories'] = 'no';
targs['demo'] = 'yes';
-- Find the template name.
local template
if args._template then
template = args._template
else
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.prefixedText:find('/sandbox$') then
template = currentTitle.prefixedText
else
template = currentTitle.basePageTitle.prefixedText
end
end
-- Call the template with the arguments.
frame = frame or mw.getCurrentFrame()
local success, result = pcall(
frame.expandTemplate,
frame,
{title = template, args = targs}
)
if success then
return result
else
return ''
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Parameter names example'
})
return p._main(args, frame)
end
return p
576eb8298850f4e4e62105ac740df295b7b7eb9e
Template:Lua
10
226
452
451
2023-01-16T18:15:47Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7
Template:Parameter names example
10
227
454
453
2023-01-16T18:15:47Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
de1e29d6ebc113e9d1649ea6a976625885db8a2f
Template:Category link with count
10
228
456
455
2023-01-16T18:15:48Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
[[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!--
-->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!--
-->]] ({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude>
{{Documentation}}
</noinclude>
f93f1540b8c157703bd6d24ae35c35bef745981d
Module:Transclusion count/data/I
828
229
458
457
2023-01-16T18:15:48Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
return {
["IAAF_name"] = 2200,
["IAST"] = 5900,
["IBDB_name"] = 9000,
["ICD10"] = 4600,
["ICD9"] = 4400,
["ICS"] = 2800,
["IDN"] = 3200,
["IMDb_episode"] = 9500,
["IMDb_episodes"] = 2400,
["IMDb_name"] = 150000,
["IMDb_title"] = 184000,
["IMO_Number"] = 4000,
["IMSLP"] = 8100,
["IND"] = 7600,
["INR"] = 6100,
["INRConvert"] = 5400,
["INRConvert/CurrentRate"] = 5400,
["INRConvert/USD"] = 5300,
["INRConvert/out"] = 5400,
["IOC_profile"] = 6100,
["IP"] = 2500,
["IPA"] = 136000,
["IPA-all"] = 3400,
["IPA-de"] = 7600,
["IPA-es"] = 7700,
["IPA-fr"] = 42000,
["IPA-it"] = 5700,
["IPA-nl"] = 3600,
["IPA-pl"] = 3900,
["IPA-pt"] = 3600,
["IPA-ru"] = 2600,
["IPA-sh"] = 2700,
["IPA-sl"] = 6800,
["IPA-th"] = 2900,
["IPA_audio_link"] = 19000,
["IPA_link"] = 3100,
["IPAc-cmn"] = 2600,
["IPAc-en"] = 46000,
["IPAc-pl"] = 52000,
["IPC_athlete"] = 2600,
["IPSummary"] = 77000,
["IP_summary"] = 77000,
["IPsock"] = 9300,
["IPtalk"] = 22000,
["IPuser"] = 6800,
["IPvandal"] = 11000,
["IRC"] = 6500,
["IRI"] = 2100,
["IRL"] = 5500,
["IRN"] = 3500,
["ISBN"] = 459000,
["ISBNT"] = 38000,
["ISBN_missing"] = 2200,
["ISFDB_name"] = 4000,
["ISFDB_title"] = 4500,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2700,
["ISO_15924/wp-article"] = 2700,
["ISO_15924/wp-article/format"] = 2700,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 488000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 7000,
["ISP"] = 5400,
["ISR"] = 4700,
["ISSN"] = 11000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 5900,
["ITF_profile"] = 8900,
["ITIS"] = 4300,
["ITN_talk"] = 9600,
["ITN_talk/date"] = 9600,
["IUCN_banner"] = 15000,
["I_sup"] = 4500,
["Iaaf_name"] = 7400,
["Ice_hockey"] = 20000,
["Ice_hockey_stats"] = 15000,
["Icehockeystats"] = 11000,
["Icon"] = 560000,
["If"] = 261000,
["If_all"] = 5800,
["If_between"] = 3700,
["If_both"] = 9870000,
["If_empty"] = 2930000,
["If_first_display_both"] = 61000,
["If_in_page"] = 7400,
["If_last_display_both"] = 28000,
["If_preview"] = 56000,
["If_then_show"] = 251000,
["Ifempty"] = 4000,
["Ifeq"] = 13000,
["Iferror_then_show"] = 3100,
["Ifexist_not_redirect"] = 1090000,
["Ifnotempty"] = 13000,
["Ifnumber"] = 32000,
["Ifsubst"] = 91000,
["Ih"] = 7500,
["Ill"] = 106000,
["Illm"] = 7000,
["Image_frame"] = 3700,
["Image_label"] = 4700,
["Image_label_begin"] = 4000,
["Image_label_end"] = 3600,
["Image_label_small"] = 2800,
["Image_needed"] = 4600,
["Image_other"] = 282000,
["Image_requested"] = 169000,
["Image_requested/Category_helper"] = 162000,
["Imbox"] = 904000,
["Imdb_name"] = 5300,
["Imdb_title"] = 4200,
["Import_style"] = 10000,
["Import_style/inputbox.css"] = 10000,
["Importance"] = 5540000,
["Importance/colour"] = 5560000,
["Importance_mask"] = 8780000,
["Improve_categories"] = 6600,
["In_class"] = 5500,
["In_lang"] = 348000,
["In_progress"] = 3000,
["In_string"] = 67000,
["In_title"] = 18000,
["Inactive_WikiProject_banner"] = 204000,
["Inactive_userpage_blanked"] = 4800,
["Include-USGov"] = 29000,
["Incomplete_list"] = 22000,
["Inconclusive"] = 2000,
["Increase"] = 40000,
["Incumbent_pope"] = 4300,
["Indent"] = 4000,
["IndexFungorum"] = 2200,
["Indian_English"] = 4100,
["Indian_Rupee"] = 9900,
["Indian_railway_code"] = 3100,
["Inflation"] = 18000,
["Inflation-fn"] = 5300,
["Inflation-year"] = 4300,
["Inflation/IN/startyear"] = 5400,
["Inflation/UK"] = 4200,
["Inflation/UK/dataset"] = 4200,
["Inflation/UK/startyear"] = 4200,
["Inflation/US"] = 11000,
["Inflation/US/dataset"] = 11000,
["Inflation/US/startyear"] = 11000,
["Inflation/fn"] = 6000,
["Inflation/year"] = 23000,
["Info"] = 7100,
["Infobox"] = 3110000,
["Infobox/Columns"] = 2200,
["Infobox/mobileviewfix.css"] = 19000,
["Infobox3cols"] = 16000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5500,
["Infobox_Aircraft_Type"] = 4800,
["Infobox_Athletics_Championships"] = 2600,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2400,
["Infobox_COA_wide"] = 3100,
["Infobox_Canada_electoral_district"] = 2400,
["Infobox_Canadian_Football_League_biography"] = 5900,
["Infobox_Canadian_Football_League_biography/position"] = 5800,
["Infobox_Chinese"] = 19000,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 15000,
["Infobox_Christian_leader"] = 17000,
["Infobox_Election"] = 2500,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 3200,
["Infobox_Gaelic_games_player"] = 4900,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Greece_place"] = 2800,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_state_legislative_assembly_constituency"] = 3600,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_MLB_yearly"] = 3100,
["Infobox_NCAA_team_season"] = 18000,
["Infobox_NFL_biography"] = 27000,
["Infobox_NFL_player"] = 8200,
["Infobox_NFL_season"] = 2600,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 5600,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Paralympic_event"] = 2500,
["Infobox_Paralympic_event/games_text"] = 2500,
["Infobox_Politician"] = 2400,
["Infobox_Romanian_subdivision"] = 3100,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4400,
["Infobox_SCOTUS_case"] = 3600,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 2100,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_legislation"] = 2200,
["Infobox_UK_place"] = 25000,
["Infobox_UK_place/NoDialCode"] = 7700,
["Infobox_UK_place/NoPostCode"] = 2900,
["Infobox_UK_place/area"] = 2300,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 25000,
["Infobox_UK_place/styles.css"] = 25000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3800,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9300,
["Infobox_YouTube_personality"] = 2400,
["Infobox_academic"] = 12000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2200,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4500,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 14000,
["Infobox_album"] = 160000,
["Infobox_album/color"] = 187000,
["Infobox_album/link"] = 160000,
["Infobox_anatomy"] = 4400,
["Infobox_ancient_site"] = 5100,
["Infobox_animanga/Footer"] = 6600,
["Infobox_animanga/Header"] = 6600,
["Infobox_animanga/Print"] = 5300,
["Infobox_animanga/Video"] = 4600,
["Infobox_architect"] = 3500,
["Infobox_artist"] = 27000,
["Infobox_artist_discography"] = 5800,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 3100,
["Infobox_automobile"] = 8300,
["Infobox_award"] = 12000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_basketball_biography"] = 20000,
["Infobox_basketball_biography/style"] = 20000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4300,
["Infobox_body_of_water"] = 17000,
["Infobox_book"] = 51000,
["Infobox_boxer"] = 5600,
["Infobox_bridge"] = 5900,
["Infobox_building"] = 26000,
["Infobox_character"] = 7800,
["Infobox_chess_biography"] = 3500,
["Infobox_chess_player"] = 3000,
["Infobox_church"] = 14000,
["Infobox_church/denomination"] = 14000,
["Infobox_church/font_color"] = 14000,
["Infobox_civil_conflict"] = 2200,
["Infobox_civilian_attack"] = 4900,
["Infobox_college_coach"] = 11000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_sports_team_season"] = 38000,
["Infobox_college_sports_team_season/link"] = 38000,
["Infobox_college_sports_team_season/name"] = 38000,
["Infobox_college_sports_team_season/succession"] = 38000,
["Infobox_college_sports_team_season/team"] = 38000,
["Infobox_comic_book_title"] = 2900,
["Infobox_comics_character"] = 3600,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 82000,
["Infobox_concert"] = 3200,
["Infobox_constituency"] = 5000,
["Infobox_country"] = 6200,
["Infobox_country/formernext"] = 5900,
["Infobox_country/imagetable"] = 5000,
["Infobox_country/multirow"] = 8000,
["Infobox_country/status_text"] = 2700,
["Infobox_country/styles.css"] = 6200,
["Infobox_country_at_games"] = 14000,
["Infobox_country_at_games/core"] = 14000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4500,
["Infobox_court_case/images"] = 2300,
["Infobox_cricket_tournament"] = 2200,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7400,
["Infobox_criminal"] = 6000,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4400,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5500,
["Infobox_designation_list"] = 18000,
["Infobox_designation_list/entry"] = 16000,
["Infobox_dim"] = 6700,
["Infobox_dim/core"] = 6700,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9200,
["Infobox_drug/chemical_formula"] = 9200,
["Infobox_drug/data_page_link"] = 9200,
["Infobox_drug/formatATC"] = 9100,
["Infobox_drug/formatCASnumber"] = 9200,
["Infobox_drug/formatChEBI"] = 9200,
["Infobox_drug/formatChEMBL"] = 9200,
["Infobox_drug/formatChemDBNIAID"] = 9200,
["Infobox_drug/formatChemSpider"] = 9200,
["Infobox_drug/formatCompTox"] = 9200,
["Infobox_drug/formatDrugBank"] = 9200,
["Infobox_drug/formatIUPHARBPS"] = 9200,
["Infobox_drug/formatJmol"] = 9200,
["Infobox_drug/formatKEGG"] = 9200,
["Infobox_drug/formatPDBligand"] = 8600,
["Infobox_drug/formatPubChemCID"] = 9200,
["Infobox_drug/formatPubChemSID"] = 9200,
["Infobox_drug/formatUNII"] = 9200,
["Infobox_drug/legal_status"] = 9300,
["Infobox_drug/licence"] = 9200,
["Infobox_drug/maintenance_categories"] = 9200,
["Infobox_drug/pregnancy_category"] = 9200,
["Infobox_drug/title"] = 9200,
["Infobox_election"] = 27000,
["Infobox_election/row"] = 27000,
["Infobox_election/shortname"] = 26000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7000,
["Infobox_event"] = 4900,
["Infobox_family"] = 2000,
["Infobox_figure_skater"] = 4100,
["Infobox_film"] = 152000,
["Infobox_film/short_description"] = 148000,
["Infobox_film_awards"] = 2500,
["Infobox_film_awards/link"] = 2500,
["Infobox_film_awards/style"] = 2500,
["Infobox_food"] = 6700,
["Infobox_football_biography"] = 203000,
["Infobox_football_club"] = 27000,
["Infobox_football_club_season"] = 19000,
["Infobox_football_league"] = 2500,
["Infobox_football_league_season"] = 19000,
["Infobox_football_match"] = 5600,
["Infobox_football_tournament_season"] = 7300,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2000,
["Infobox_game"] = 2300,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4000,
["Infobox_golfer"] = 4300,
["Infobox_golfer/highest_ranking"] = 4300,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2400,
["Infobox_gridiron_football_person"] = 2700,
["Infobox_gridiron_football_person/position"] = 5800,
["Infobox_gymnast"] = 3300,
["Infobox_handball_biography"] = 4800,
["Infobox_historic_site"] = 11000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6200,
["Infobox_hospital/care_system"] = 6200,
["Infobox_hospital/lists"] = 6200,
["Infobox_ice_hockey_biography"] = 19000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_information_appliance"] = 2300,
["Infobox_international_football_competition"] = 5500,
["Infobox_islands"] = 8600,
["Infobox_islands/area"] = 9000,
["Infobox_islands/density"] = 9000,
["Infobox_islands/length"] = 8600,
["Infobox_islands/styles.css"] = 8600,
["Infobox_journal"] = 9600,
["Infobox_journal/Abbreviation_search"] = 9500,
["Infobox_journal/Bluebook_check"] = 9300,
["Infobox_journal/Former_check"] = 9300,
["Infobox_journal/ISO_4_check"] = 9300,
["Infobox_journal/ISSN-eISSN"] = 9400,
["Infobox_journal/Indexing_search"] = 9400,
["Infobox_journal/MathSciNet_check"] = 9300,
["Infobox_journal/NLM_check"] = 9300,
["Infobox_journal/frequency"] = 8500,
["Infobox_lake"] = 4500,
["Infobox_language"] = 9400,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6500,
["Infobox_language/linguistlist"] = 9400,
["Infobox_language/ref"] = 7000,
["Infobox_law_enforcement_agency"] = 2000,
["Infobox_legislature"] = 3500,
["Infobox_library"] = 2100,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4800,
["Infobox_magazine"] = 7400,
["Infobox_manner_of_address"] = 3200,
["Infobox_mapframe"] = 79000,
["Infobox_martial_artist"] = 5500,
["Infobox_martial_artist/record"] = 5500,
["Infobox_medal_templates"] = 414000,
["Infobox_medical_condition"] = 9900,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_military_conflict"] = 21000,
["Infobox_military_installation"] = 9600,
["Infobox_military_person"] = 44000,
["Infobox_military_unit"] = 25000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_mountain"] = 27000,
["Infobox_multi-sport_competition_event"] = 2200,
["Infobox_museum"] = 10000,
["Infobox_musical_artist"] = 119000,
["Infobox_musical_artist/color"] = 119000,
["Infobox_musical_artist/hCard_class"] = 307000,
["Infobox_musical_composition"] = 2700,
["Infobox_name"] = 7300,
["Infobox_name_module"] = 11000,
["Infobox_newspaper"] = 9300,
["Infobox_nobility"] = 2400,
["Infobox_noble"] = 7000,
["Infobox_officeholder"] = 206000,
["Infobox_officeholder/office"] = 211000,
["Infobox_official_post"] = 7700,
["Infobox_organization"] = 35000,
["Infobox_pageant_titleholder"] = 2800,
["Infobox_park"] = 7100,
["Infobox_person"] = 454000,
["Infobox_person/Wikidata"] = 4800,
["Infobox_person/height"] = 100000,
["Infobox_person/length"] = 6900,
["Infobox_person/weight"] = 65000,
["Infobox_philosopher"] = 3200,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3700,
["Infobox_political_party"] = 13000,
["Infobox_power_station"] = 2900,
["Infobox_prepared_food"] = 3300,
["Infobox_professional_wrestler"] = 4100,
["Infobox_professional_wrestling_event"] = 2500,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2300,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3500,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7100,
["Infobox_rail_line/tracking"] = 7100,
["Infobox_rail_service"] = 2900,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3300,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6200,
["Infobox_religious_biography"] = 4900,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 16000,
["Infobox_restaurant"] = 2300,
["Infobox_river"] = 29000,
["Infobox_river/calcunit"] = 29000,
["Infobox_river/discharge"] = 29000,
["Infobox_river/row-style"] = 29000,
["Infobox_river/source"] = 29000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2200,
["Infobox_rockunit"] = 6400,
["Infobox_royalty"] = 21000,
["Infobox_royalty/short_description"] = 13000,
["Infobox_rugby_biography"] = 15000,
["Infobox_rugby_biography/correct_date"] = 15000,
["Infobox_rugby_biography/depcheck"] = 6800,
["Infobox_rugby_league_biography"] = 9800,
["Infobox_rugby_league_biography/PLAYER"] = 9700,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2100,
["Infobox_saint"] = 4900,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5600,
["Infobox_school_district/styles.css"] = 5600,
["Infobox_scientist"] = 47000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 551000,
["Infobox_settlement/areadisp"] = 231000,
["Infobox_settlement/columns"] = 92000,
["Infobox_settlement/columns/styles.css"] = 92000,
["Infobox_settlement/densdisp"] = 421000,
["Infobox_settlement/impus"] = 80000,
["Infobox_settlement/lengthdisp"] = 167000,
["Infobox_settlement/link"] = 92000,
["Infobox_settlement/metric"] = 206000,
["Infobox_settlement/pref"] = 286000,
["Infobox_settlement/styles.css"] = 551000,
["Infobox_ship_begin"] = 40000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 40000,
["Infobox_ship_class_overview"] = 4000,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3400,
["Infobox_short_story"] = 2300,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 74000,
["Infobox_song/color"] = 74000,
["Infobox_song/link"] = 74000,
["Infobox_spaceflight"] = 3500,
["Infobox_spaceflight/styles.css"] = 3500,
["Infobox_sports_competition_event"] = 15000,
["Infobox_sports_competition_event/medalrow"] = 10000,
["Infobox_sports_league"] = 4900,
["Infobox_sports_season"] = 5100,
["Infobox_sports_team"] = 2300,
["Infobox_sportsperson"] = 105000,
["Infobox_stadium"] = 3800,
["Infobox_station"] = 54000,
["Infobox_station/doc"] = 54000,
["Infobox_station/services"] = 54000,
["Infobox_station/styles.css"] = 54000,
["Infobox_street"] = 3200,
["Infobox_swimmer"] = 9300,
["Infobox_television"] = 55000,
["Infobox_television/Short_description"] = 53000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 11000,
["Infobox_television_episode/styles.css"] = 11000,
["Infobox_television_season"] = 9100,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 9900,
["Infobox_tennis_event"] = 2300,
["Infobox_tennis_tournament_event"] = 18000,
["Infobox_tennis_tournament_year"] = 8900,
["Infobox_tennis_tournament_year/color"] = 27000,
["Infobox_tennis_tournament_year/footer"] = 27000,
["Infobox_train"] = 2200,
["Infobox_tropical_cyclone"] = 2300,
["Infobox_union"] = 2200,
["Infobox_university"] = 26000,
["Infobox_user"] = 2600,
["Infobox_venue"] = 17000,
["Infobox_video_game"] = 27000,
["Infobox_video_game/styles.css"] = 27000,
["Infobox_volleyball_biography"] = 5200,
["Infobox_weapon"] = 7200,
["Infobox_website"] = 7600,
["Infobox_writer"] = 37000,
["Information"] = 105000,
["Information/styles.css"] = 105000,
["Inprogress"] = 2200,
["Input_link"] = 32000,
["Instagram"] = 9600,
["Interlanguage_link"] = 142000,
["Interlanguage_link_multi"] = 20000,
["Internet_Archive_author"] = 18000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 11000,
["Invalid_SVG"] = 3800,
["Invalid_SVG/styles.css"] = 3800,
["Ipsock"] = 7900,
["Iptalk"] = 20000,
["IranCensus2006"] = 54000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 54000,
["Irc"] = 2100,
["Irish_place_name"] = 2500,
["IsIPAddress"] = 38000,
["IsValidPageName"] = 133000,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 13000,
["Is_interwiki_link"] = 6000,
["Is_italic_taxon"] = 452000,
["Is_redirect"] = 25000,
["Isbn"] = 6600,
["Isfdb_name"] = 3900,
["Isfdb_title"] = 4500,
["Isnumeric"] = 199000,
["Iso2continent"] = 33000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 215000,
["Issubst"] = 71000,
["Isu_name"] = 2300,
["Italic_dab2"] = 5000,
["Italic_title"] = 294000,
["Italic_title_prefixed"] = 8600,
["Italics_colon"] = 3300,
["Italictitle"] = 4400,
["Ivm"] = 5800,
["Ivm/styles.css"] = 5800,
["Ivmbox"] = 120000,
["Ivory_messagebox"] = 134000,
["Module:I18n/complex_date"] = 64000,
["Module:IP"] = 111000,
["Module:IPA_symbol"] = 4300,
["Module:IPA_symbol/data"] = 4400,
["Module:IPAc-en"] = 46000,
["Module:IPAc-en/data"] = 46000,
["Module:IPAc-en/phonemes"] = 46000,
["Module:IPAc-en/pronunciation"] = 46000,
["Module:IPAddress"] = 168000,
["Module:ISO_3166"] = 982000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2700,
["Module:ISO_3166/data/CN"] = 2000,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3500,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6300,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 28000,
["Module:ISO_3166/data/National"] = 982000,
["Module:ISO_3166/data/PL"] = 2500,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 24000,
["Module:ISO_3166/data/TR"] = 2300,
["Module:ISO_3166/data/US"] = 83000,
["Module:ISO_639_name"] = 13000,
["Module:ISOdate"] = 64000,
["Module:Icon"] = 560000,
["Module:Icon/data"] = 560000,
["Module:If_empty"] = 2930000,
["Module:If_in_page"] = 7400,
["Module:If_preview"] = 465000,
["Module:If_preview/configuration"] = 465000,
["Module:If_preview/styles.css"] = 465000,
["Module:Import_style"] = 10000,
["Module:In_lang"] = 348000,
["Module:Indent"] = 4000,
["Module:Infobox"] = 3990000,
["Module:Infobox/dates"] = 64000,
["Module:Infobox/styles.css"] = 4240000,
["Module:Infobox3cols"] = 291000,
["Module:InfoboxImage"] = 4280000,
["Module:Infobox_body_of_water_tracking"] = 17000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 375000,
["Module:Infobox_military_conflict"] = 21000,
["Module:Infobox_military_conflict/styles.css"] = 21000,
["Module:Infobox_multi-lingual_name"] = 19000,
["Module:Infobox_multi-lingual_name/data"] = 19000,
["Module:Infobox_power_station"] = 2900,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 55000,
["Module:Infobox_television_disambiguation_check"] = 62000,
["Module:Infobox_television_episode"] = 11000,
["Module:Infobox_television_season_disambiguation_check"] = 8600,
["Module:Infobox_television_season_name"] = 9100,
["Module:Internet_Archive"] = 18000,
["Module:IrelandByCountyCatNav"] = 2500,
["Module:Is_infobox_in_lead"] = 372000,
["Module:Is_instance"] = 8000,
["Module:Italic_title"] = 1090000,
["Module:Italic_title2"] = 5000,
}
f698d6f8949cf41d32be12a685875510b85ac931
Template:Infobox/doc
10
230
460
459
2023-01-16T18:15:50Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{distinguish|Template:Userbox}}
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Lua|Module:Infobox}}
{{Parameter names example
|name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>......
|image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>......
|header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div>
|label2={{{label1}}} |data2={{{data1}}}
|data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div>
|header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div>
|label6={{{label2}}} |data6={{{data2}}}
|data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div>
|data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div>
|below
}}
This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes.
== Usage ==
{{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}).
For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified:
<pre>
{{Infobox
| name = {{{name|{{PAGENAME}}}}}
| image = {{{image|}}}
| caption1 = {{{caption|}}}
| label1 = Former names
| data1 = {{{former_names|}}}
| header2 = General information
| label3 = Status
| data3 = {{{status|}}}
... <!-- etc. -->
}}
</pre>
== Optional control parameters ==
; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change.
; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it.
; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes".
; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it.
; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details.
== Content parameters ==
=== Title ===
There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended):
; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative.
; above : Text to put within the uppermost cell of the table.
; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images.
Examples:
{{Infobox
| name = Infobox/doc
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<pre style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</pre>{{clear}}
{{Infobox
| name = Infobox/doc
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<pre style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</pre>{{clear}}
=== Illustration images ===
; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text.
; caption(n) : Text to put underneath the images.
=== Main data ===
; header(n) : Text to use as a header in row n.
; label(n) : Text to use as a label in row n.
; data(n) : Text to display as data in row n.
Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are:
* {{para|class''(n)''}} {{para|header''(n)''}}
* {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
* {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below.
==== Number ranges ====
To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example:
<pre style="overflow:auto">
| header3 = Section 1
| label5 = Label A
| data5 = Data A
| label7 = Label C
| data7 = Data C
| header10 = Section 2
| label12 = Label D
| data12 = Data D
</pre>{{clear}}
It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]].
There is no upper limit on numbers but there must be at most 50 between each used number.
==== Making data fields optional ====
A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so:
<pre style="overflow:auto">
| label5 = Population
| data5 = {{{population|}}}
</pre>{{clear}}
This way if an article doesn't define the population parameter in its infobox the row won't be displayed.
For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'":
<pre style="overflow:auto">
| label6 = Mass
| data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }}
</pre>{{clear}}
For more on #if, see [[meta:ParserFunctions##if:|here]].
==== Hiding headers when all its data fields are empty ====
You can also make headers automatically hide when their section is empty (has no data-row showing).
Consider this situation:
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<pre style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</pre>{{clear}}
If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''':
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<syntaxhighlight lang="moin" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</syntaxhighlight>{{clear}}
So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content.
Note: if the data has empty css elements, like {{para|data|2=<span style="background:yellow;"></span>}}, this will be treated as non-empty (having data).
If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items.
{{Infobox
| title = Example: blank header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
<syntaxhighlight lang="moin" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
</syntaxhighlight>{{clear}}
=== Footer ===
; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information.
== Presentation parameters ==
=== Italic titles ===
Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter.
* Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox.
* Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}}
* Do not make any titles italic by not passing the parameter at all.
=== CSS styling ===
{{div col}}
; bodystyle : Applies to the infobox table as a whole
; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox.
; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle.
; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future.
; captionstyle : Applies to the text of the image caption.
; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row.
; headerstyle : Applies to all header cells
; subheaderstyle : Applies to all subheader cells
; labelstyle : Applies to all label cells
; datastyle : Applies to all data cells
; belowstyle : Applies only to the below cell
{{div col end}}
=== HTML classes and microformats ===
{{div col}}
; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole.
; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption.
<!-- currently not implemented in Lua module
; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on.
-->
; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell.
; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on.
; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''.
; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on.
; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''.
; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells.
; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect.
<!-- currently not implemented in Lua module
; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on.
-->
; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell.
{{div col end}}
This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats.
To flag an infobox as containing [[hCard]] information, for example, add the following parameter:
<pre style="overflow:auto">
| bodyclass = vcard
</pre>{{clear}}
And for each row containing a data cell that's part of the vcard, add a corresponding class parameter:
<pre style="overflow:auto">
| class1 = fn
| class2 = org
| class3 = tel
</pre>{{clear}}
...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox.
See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general.
== Examples ==
Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell :
{{Infobox
|name = Infobox/doc
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
|image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below File:Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
<syntaxhighlight lang="Sass" style="overflow:auto" highlight="15">
{{Infobox
|name = {{subst:PAGENAME}}
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
| image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
</syntaxhighlight>{{clear}}
For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels:
{{Infobox
|name = Infobox/doc
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
<syntaxhighlight lang="sass" highlight="3,9" style="overflow: auto">
{{Infobox
|name = {{subst:PAGENAME}}
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
</syntaxhighlight>{{clear}}
== Embedding ==
<!--Linked from [[Template:Subinfobox bodystyle/doc]]-->
One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>.
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<pre style="overflow:auto">
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</pre>{{clear}}
Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<pre style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</pre>{{clear}}
or,
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<pre style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</pre>{{clear}}
Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number.
[[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes.
== Subboxes ==
An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table.
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
<syntaxhighlight lang="sass" style="overflow:auto">
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
</syntaxhighlight>{{clear}}
Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) :
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
<syntaxhighlight lang="sass" style="overflow:auto">
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
</syntaxhighlight>{{clear}}
Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes.
== Controlling line-breaking in embedded bulletless lists ==
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details.
== Full blank syntax ==
(Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.)
<pre style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| templatestyles =
| child templatestyles =
| grandchild templatestyles =
| bodystyle =
| titlestyle =
| abovestyle =
| subheaderstyle =
| title =
| above =
| subheader =
| imagestyle =
| captionstyle =
| image =
| caption =
| image2 =
| caption2 =
| headerstyle =
| labelstyle =
| datastyle =
| header1 =
| label1 =
| data1 =
| header2 =
| label2 =
| data2 =
| header3 =
| label3 =
| data3 =
| header4 =
| label4 =
| data4 =
| header5 =
| label5 =
| data5 =
| header6 =
| label6 =
| data6 =
| header7 =
| label7 =
| data7 =
| header8 =
| label8 =
| data8 =
| header9 =
| label9 =
| data9 =
| header10 =
| label10 =
| data10 =
| header11 =
| label11 =
| data11 =
| header12 =
| label12 =
| data12 =
| header13 =
| label13 =
| data13 =
| header14 =
| label14 =
| data14 =
| header15 =
| label15 =
| data15 =
| header16 =
| label16 =
| data16 =
| header17 =
| label17 =
| data17 =
| header18 =
| label18 =
| data18 =
| header19 =
| label19 =
| data19 =
| header20 =
| label20 =
| data20 =
| belowstyle =
| below =
}}
</pre>{{clear}}
{{Help:Infobox/user style}}
== Porting to other MediaWikis ==
The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] extension. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.",
"format": "{{_\n| ________________ = _\n}}\n",
"params": {
"title": {
"label": "Title",
"description": "Title displayed above the infobox",
"type": "string",
"suggested": true
},
"image": {
"label": "Image",
"description": "Image illustrating the topic. Use full image syntax.",
"type": "content",
"suggested": true,
"example": "[[File:example.png|200px|alt=Example alt text]]"
},
"caption": {
"label": "Caption",
"description": "caption for the image",
"type": "content",
"suggested": true
}
},
"paramOrder": [
"title",
"image",
"caption"
]
}
</templatedata>
==Tracking categories==
* {{Category link with count|Articles with missing Wikidata information}}
* {{Category link with count|Articles using infobox templates with no data rows}}
* {{Category link with count|Pages using embedded infobox templates with the title parameter}}
==See also==
* [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based
* [[Module:Check for unknown parameters]]
* {{tl|Infobox3cols}}
* {{tl|Navbox}} and {{tl|Sidebar}}
* [[Wikipedia:List of infoboxes|List of infoboxes]]
* [[:Module:InfoboxImage]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates| ]]
[[Category:Wikipedia metatemplates|Infobox]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates based on the Infobox Lua module]]
}}</includeonly>
4d4021dda2765ddd1cf8ba09b9fff12760e924a9
Help:Infobox/user style
12
231
462
461
2023-01-16T18:15:51Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{{heading|
==Infoboxes and user style ==
}}}
Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers.
To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself:
<syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight>
Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]:
<syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight>
Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article.<!--
Needs Special:Mypage/common.js options for:
* Making infoboxes collapsible
** Making them auto-collapsed
* Moving infoboxes to bottom of page
--><noinclude>
{{Documentation|content=
This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant.
As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code>
}}
</noinclude>
6da0d499b1fda33a6ba13b40e6605692fc3bb489
Module:Message box/ombox.css
828
232
464
463
2023-01-16T18:15:51Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
Template:Hlist/styles.css
10
233
466
465
2023-01-16T18:15:51Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp-protected|reason=match parent|small=yes}} */
/*
* hlist styles are defined in core and Minerva and differ in Minerva. The
* current definitions here (2023-01-01) are sufficient to override Minerva
* without use of the hlist-separated class. The most problematic styles were
* related to margin, padding, and the bullet. Check files listed at
* [[MediaWiki talk:Common.css/to do#hlist-separated]]
*/
/*
* TODO: When the majority of readership supports it (or some beautiful world
* in which grade C support is above the minimum threshold), use :is()
*/
.hlist dl,
.hlist ol,
.hlist ul {
margin: 0;
padding: 0;
}
/* Display list items inline */
.hlist dd,
.hlist dt,
.hlist li {
/*
* don't trust the note that says margin doesn't work with inline
* removing margin: 0 makes dds have margins again
* We also want to reset margin-right in Minerva
*/
margin: 0;
display: inline;
}
/* Display requested top-level lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
/* Display nested lists inline */
.hlist dl dl,
.hlist dl ol,
.hlist dl ul,
.hlist ol dl,
.hlist ol ol,
.hlist ol ul,
.hlist ul dl,
.hlist ul ol,
.hlist ul ul {
display: inline;
}
/* Hide empty list items */
.hlist .mw-empty-li {
display: none;
}
/* TODO: :not() can maybe be used here to remove the later rule. naive test
* seems to work. more testing needed. like so:
*.hlist dt:not(:last-child)::after {
* content: ": ";
*}
*.hlist dd:not(:last-child)::after,
*.hlist li:not(:last-child)::after {
* content: " · ";
* font-weight: bold;
*}
*/
/* Generate interpuncts */
.hlist dt::after {
content: ": ";
}
.hlist dd::after,
.hlist li::after {
content: " · ";
font-weight: bold;
}
.hlist dd:last-child::after,
.hlist dt:last-child::after,
.hlist li:last-child::after {
content: none;
}
/* Add parentheses around nested lists */
.hlist dd dd:first-child::before,
.hlist dd dt:first-child::before,
.hlist dd li:first-child::before,
.hlist dt dd:first-child::before,
.hlist dt dt:first-child::before,
.hlist dt li:first-child::before,
.hlist li dd:first-child::before,
.hlist li dt:first-child::before,
.hlist li li:first-child::before {
content: " (";
font-weight: normal;
}
.hlist dd dd:last-child::after,
.hlist dd dt:last-child::after,
.hlist dd li:last-child::after,
.hlist dt dd:last-child::after,
.hlist dt dt:last-child::after,
.hlist dt li:last-child::after,
.hlist li dd:last-child::after,
.hlist li dt:last-child::after,
.hlist li li:last-child::after {
content: ")";
font-weight: normal;
}
/* Put ordinals in front of ordered list items */
.hlist ol {
counter-reset: listitem;
}
.hlist ol > li {
counter-increment: listitem;
}
.hlist ol > li::before {
content: " " counter(listitem) "\a0";
}
.hlist dd ol > li:first-child::before,
.hlist dt ol > li:first-child::before,
.hlist li ol > li:first-child::before {
content: " (" counter(listitem) "\a0";
}
8c9dd9c9c00f30eead17fe10f51d183333e81f33
Template:Ombox
10
234
468
467
2023-01-16T18:15:52Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0e54065432d540737b9e56c4e3a8e7f74d4534ea
Module:TNT
828
235
470
469
2023-01-16T18:15:52Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
--
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)
-- This module allows any template or module to be copy/pasted between
-- wikis without any translation changes. All translation text is stored
-- in the global Data:*.tab pages on Commons, and used everywhere.
--
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules
--
-- ATTENTION:
-- Please do NOT rename this module - it has to be identical on all wikis.
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT
-- Please do not modify it anywhere else, as it may get copied and override your changes.
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT
--
-- DESCRIPTION:
-- The "msg" function uses a Commons dataset to translate a message
-- with a given key (e.g. source-table), plus optional arguments
-- to the wiki markup in the current content language.
-- Use lang=xx to set language. Example:
--
-- {{#invoke:TNT | msg
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
-- {{#invoke:TNT | doc | Graph:Lines }}
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab
-- if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
-- Forward declaration of the local functions
local sanitizeDataset, loadData, link, formatMessage
function p.msg(frame)
local dataset, id
local params = {}
local lang = nil
for k, v in pairs(frame.args) do
if k == 1 then
dataset = mw.text.trim(v)
elseif k == 2 then
id = mw.text.trim(v)
elseif type(k) == 'number' then
table.insert(params, mw.text.trim(v))
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
end
end
return formatMessage(dataset, id, params, lang)
end
-- Identical to p.msg() above, but used from other lua modules
-- Parameters: name of dataset, message key, optional arguments
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.format(dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
return formatMessage(dataset, key, {...})
end
-- Identical to p.msg() above, but used from other lua modules with the language param
-- Parameters: language code, name of dataset, message key, optional arguments
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.formatInLanguage(lang, dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('formatInLanguage', 1, lang, 'string')
checkType('formatInLanguage', 2, dataset, 'string')
checkType('formatInLanguage', 3, key, 'string')
return formatMessage(dataset, key, {...}, lang)
end
-- Obsolete function that adds a 'c:' prefix to the first param.
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'
function p.link(frame)
return link(frame.args[1])
end
function p.doc(frame)
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})
end
function p.getTemplateData(dataset)
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
local names = {}
for _, field in pairs(data.schema.fields) do
table.insert(names, field.name)
end
local params = {}
local paramOrder = {}
for _, row in pairs(data.data) do
local newVal = {}
local name = nil
for pos, val in pairs(row) do
local columnName = names[pos]
if columnName == 'name' then
name = val
else
newVal[columnName] = val
end
end
if name then
params[name] = newVal
table.insert(paramOrder, name)
end
end
-- Work around json encoding treating {"1":{...}} as an [{...}]
params['zzz123']=''
local json = mw.text.jsonEncode({
params=params,
paramOrder=paramOrder,
description=data.description
})
json = string.gsub(json,'"zzz123":"",?', "")
return json
end
-- Local functions
sanitizeDataset = function(dataset)
if not dataset then
return nil
end
dataset = mw.text.trim(dataset)
if dataset == '' then
return nil
elseif string.sub(dataset,-4) ~= '.tab' then
return dataset .. '.tab'
else
return dataset
end
end
loadData = function(dataset, lang)
dataset = sanitizeDataset(dataset)
if not dataset then
error(formatMessage(i18nDataset, 'error_no_dataset', {}))
end
-- Give helpful error to thirdparties who try and copy this module.
if not mw.ext or not mw.ext.data or not mw.ext.data.get then
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)
end
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Missing Commons dataset ' .. i18nDataset)
else
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))
end
end
return data
end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
link = function(dataset)
return 'c:Data:' .. mw.text.trim(dataset or '')
end
formatMessage = function(dataset, key, params, lang)
for _, row in pairs(loadData(dataset, lang).data) do
local id, msg = unpack(row)
if id == key then
local result = mw.message.newRawMessage(msg, unpack(params or {}))
return result:plain()
end
end
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Invalid message key "' .. key .. '"')
else
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))
end
end
return p
9d0d10e54abd232c806dcabccaf03e52858634a1
Template:Clc
10
236
472
471
2023-01-16T18:15:53Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
#REDIRECT [[Template:Category link with count]]
02280e2ab57b544236e11f913e3759c5781ca9d5
Template:Module other
10
237
474
473
2023-01-16T18:15:53Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Module}}
| module
| other
}}
}}
| module = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
503694836c1b07142e63fd35d8be69ec8bb9ffe7
Template:Module rating
10
238
476
475
2023-01-16T18:15:54Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox
| type = notice
| image = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]]
| alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]]
| beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]]
| release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]]
| protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]]
| semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]]
}}
| style =
| textstyle =
| text = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }}
}}
| alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }}
}}
| beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }}
}}
| release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }}
}}
| protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| #default = {{error|Module rating is invalid or not specified.}}
}}
}}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude>
{{module rating|release|nocat=true|demospace=module}}
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc
Template:Uses TemplateStyles
10
239
478
477
2023-01-16T18:15:54Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
<includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude>
{{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
7e26d8f257e302bd8a3dcbe53f52741ae0884f74
Module:Uses TemplateStyles
828
240
480
479
2023-01-16T18:15:55Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local TNT = require('Module:TNT')
local p = {}
local function format(msg, ...)
return TNT.format('I18n/Uses TemplateStyles', msg, ...)
end
local function getConfig()
return mw.loadData('Module:Uses TemplateStyles/config')
end
local function renderBox(tStyles)
local boxArgs = {
type = 'notice',
small = true,
image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
}
if #tStyles < 1 then
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
else
local cfg = getConfig()
local tStylesLinks = {}
for i, ts in ipairs(tStyles) do
local link = string.format('[[:%s]]', ts)
local sandboxLink = nil
local tsTitle = mw.title.new(ts)
if tsTitle and cfg['sandbox_title'] then
local tsSandboxTitle = mw.title.new(string.format(
'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
if tsSandboxTitle and tsSandboxTitle.exists then
sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
end
end
tStylesLinks[i] = sandboxLink or link
end
local tStylesList = mList.makeList('bulleted', tStylesLinks)
boxArgs.text = format(
mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
'\n' .. tStylesList
end
return mMessageBox.main('mbox', boxArgs)
end
local function renderTrackingCategories(args, tStyles, titleObj)
if yesno(args.nocat) then
return ''
end
local cfg = getConfig()
local cats = {}
-- Error category
if #tStyles < 1 and cfg['error_category'] then
cats[#cats + 1] = cfg['error_category']
end
-- TemplateStyles category
titleObj = titleObj or mw.title.getCurrentTitle()
if (titleObj.namespace == 10 or titleObj.namespace == 828)
and not cfg['subpage_blacklist'][titleObj.subpageText]
then
local category = args.category or cfg['default_category']
if category then
cats[#cats + 1] = category
end
if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then
local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil
local addedLevelCat = false
local addedPadlockCat = false
for i, ts in ipairs(tStyles) do
local tsTitleObj = mw.title.new(ts)
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
local content = tsTitleObj:getContent()
if not content:find(cfg['padlock_pattern']) then
cats[#cats + 1] = cfg['missing_padlock_category']
addedPadlockCat = true
end
end
if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then
currentProt = cfg['protection_hierarchy'][currentProt] or 0
tsProt = cfg['protection_hierarchy'][tsProt] or 0
if tsProt < currentProt then
addedLevelCat = true
cats[#cats + 1] = cfg['protection_conflict_category']
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
function p._main(args, cfg)
local tStyles = mTableTools.compressSparseArray(args)
local box = renderBox(tStyles)
local trackingCategories = renderTrackingCategories(args, tStyles)
return box .. trackingCategories
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
return p
71ca57c37849f38e3c5ee30061bdae730963e48e
Module:Uses TemplateStyles/config
828
241
482
481
2023-01-16T18:15:55Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the
-- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css
-- Set to nil to disable sandbox links.
cfg['sandbox_title'] = 'sandbox'
-- Error category: this category is added if the module call contains errors
-- (e.g. no stylesheet listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Uses TemplateStyles templates with errors'
-- Default category: this category is added if no custom category is specified
-- in module/template call. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Templates using TemplateStyles'
-- Protection conflict category: this category is added if the protection level
-- of any stylesheet is lower than the protection level of the template. A category name
-- without namespace, or nil to disable categorization (not recommended).
cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level'
-- Hierarchy of protection levels, used to determine whether one protection level is lower
-- than another and thus should populate protection_conflict_category. No protection is treated as zero
cfg['protection_hierarchy'] = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
-- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil
-- to disable padlock check.
cfg['padlock_pattern'] = '{{pp-'
-- Missing padlock category: this category is added if a protected stylesheet
-- doesn’t contain any padlock template (specified by the above Lua pattern).
-- A category name without namespace (no nil allowed) if the pattern is not nil,
-- unused (and thus may be nil) otherwise.
cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks'
return cfg -- Don’t touch this line.
58e7a37c44f6ea3f6b8af54a559d696cc7256493
Module:Infobox/doc
828
242
484
483
2023-01-16T18:15:56Z
BEELETH
2
1 revision imported: Import from Wikipedia
wikitext
text/x-wiki
{{High-use|3308957|all-pages = yes}}
{{module rating|protected}}
{{Lua|Module:Navbar}}
{{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}}
'''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions.
== Tracking categories ==
* {{clc|Pages using infobox templates with ignored data cells}}
* {{clc|Articles using infobox templates with no data rows}}
* {{clc|Pages using embedded infobox templates with the title parameter}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
[[Category:Modules that add a tracking category]]
[[Category:Wikipedia infoboxes]]
[[Category:Infobox modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
5381394a0c0d893c8387fa699e9e185a298bd831
Template:Plainlist/styles.css
10
243
486
485
2023-01-16T18:15:56Z
BEELETH
2
1 revision imported: Import from Wikipedia
text
text/plain
/* {{pp-template|small=yes}} */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
padding: 0; /* Reset Minerva default */
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
51706efa229ff8794c0d94f260a208e7c5e6ec30
Module:TemplateStyles
828
244
487
2023-01-16T19:28:22Z
BEELETH
2
Hopefully this works??
Scribunto
text/plain
return function (CSS_page)
return mw.getCurrentFrame():extensionTag{
name = "templatestyles", args = { src = CSS_page }
}
end
d3d1af185bd67ec39d0f226d5afc3c21fe548702
Halberd (character)
0
166
488
328
2023-01-16T19:28:44Z
BEELETH
2
Began work on page.
wikitext
text/x-wiki
{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* they/them
* he/him
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s sonas as well as a representation of them in the future. He was originally created in late 2022 as a Roblox avatar, but was further developed in early 2023 to become something more.
== Personality ==
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit more exaggerated to an extent.
== Appearance ==
By default, he is typically portrayed as a short, heavyset man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his palette or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* His eye color is brown.
== History ==
Placeholder text
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a werewolf form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
== Trivia ==
Placeholder
== Related pages ==
Placeholder
b31f8e685d21e1761db5aead4a4e5571d71362af
491
488
2023-01-18T04:32:12Z
BEELETH
2
Expanded some sections and rephrased some parts
wikitext
text/x-wiki
{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit more exaggerated to an extent.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of vienna sausages and drinking the broth in below 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
== Related pages ==
TBA
91db1495a194877b7e37a9e0c03b004535139923
497
491
2023-01-18T05:50:08Z
BEELETH
2
Added categories
wikitext
text/x-wiki
{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit more exaggerated to an extent.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of vienna sausages and drinking the broth in below 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
== Related pages ==
TBA
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
2d878aaec25f08b6a4202a2f7295f6e55f059367
VAST SPACE ARCHIVES: Beeleth Wiki:About
0
245
489
2023-01-16T21:17:57Z
BEELETH
2
Created page placeholder; will edit momentarily
wikitext
text/x-wiki
Placeholder text
25610c1bb7ae174851472ee3c45744ba20a07a81
490
489
2023-01-16T21:42:18Z
BEELETH
2
Filled out page.
wikitext
text/x-wiki
The '''Vast Space Archives''' (alternatively called '''Beeleth Wiki''' or anything remotely recognizable as referring to this wiki in particular) is the official wiki of [[BEELETH]]'s character/project universe, and is able to be freely edited by those who wish to participate in expanding its contents. It was once hosted elsewhere, but has since been moved to Miraheze and will continue to recieve updates exclusively on Miraheze.
Though the main focus is on firsthand canon media and characters, those who create their own content for the shared universe are allowed to add their own pages in good faith as long as they make it extremely clear on each page that their content may or may not be actually recognized as existent in the official canon. Users can request for the topics of their page to become canon by contacting BEELETH.
== History ==
Beeleth Wiki was originally hosted on Fandom until towards the end of 2022, by which BEEL decided to transfer it to Miraheze. A database outage forced edits to be made the following year rather than shortly after the wiki's creation.
== Things to do ==
If you would like to help around with the wiki or familiarize yourself with it, be sure to try:
* Ensuring pages contain detailed information that lines up with known or written information provided from firsthand, canon media/sources
* Uploading relevant images, audio, and videos that do not already exist on the wiki
* Helping repair broken templates, modules, and pages (the transition to Miraheze was ''rough''!)
* Reading the pages already present here
The [[Vast Space]] is constantly expanding, so things written here often become outdated quickly. It's always helpful to provide quick edits to update pages to be accurate rather than to wait until lots of new information drops and make one large edit.
=== Guidelines ===
[[:Category:Wiki guides|Guide pages]] regarding the wiki will be provided eventually, but do not currently exist as of this edit. These pages will help clarify what is expected to be on each page, how they should be formatted, and what is not allowed to be posted and/or referenced among other helpful things.
In the meantime, please ensure that all edits and uploads follow all of Miraheze's policies. Do not post any private information regardless of who or what it is tied to, and ensure that all content provided here is relevant and of high quality (or will lead up to such standards in the future).
== Conclusion ==
Thanks for coming to the Vast Space Archives, and please consider helping out! Every edit means a lot.
707f4d05acdadd0f49857be7f219886e86c301c5
Human
0
246
492
2023-01-18T04:32:58Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[Humans]]
dd01b2ed05af74ec61610572afbfd9855a658923
Vast Space
0
247
493
2023-01-18T05:38:21Z
BEELETH
2
Began work on page.
wikitext
text/x-wiki
{{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse
* The Multiverse
* Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity)
* [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]]
* [[Sender Space]]
* [[Uncharted Space]]
* [[Anomaly Space]]
* [[World's End Timeline]]
* Several smaller, obscure Spaces}}
'''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws.
== Creation and development ==
The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years.
== In-universe history ==
It is uncertain when the Vast Space was created.
== Spatial characteristics ==
As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created.
# Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort.
#* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event.
#* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space.
# Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience.
# Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions.
# Humans usually exist at some point in each universe, but this is not always the case.
=== Laws ===
# Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible.
#* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence.
# All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way.
#* He does not have to be human.
# The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities.
#* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people.
#* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe.
# Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls.
# Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things.
# Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses,
== Trivia ==
* TBA
== Related pages ==
TBA
418bc6026db3b97f6a6401a50e791271d220c62b
496
493
2023-01-18T05:48:33Z
BEELETH
2
Added some text and fixed infobox
wikitext
text/x-wiki
{{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse
* The Multiverse
* Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity)
* [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]]
* [[Sender Space]]
* [[Uncharted Space]]
* [[Anomaly Space]]
* [[World's End Timeline]]
* Several smaller, obscure Spaces}}
'''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws.
== Creation and development ==
The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years.
== In-universe history ==
It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it.
== Spatial characteristics ==
As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created.
# Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort.
#* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event.
#* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space.
# Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience.
# Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions.
# Humans usually exist at some point in each universe, but this is not always the case.
=== Laws ===
# Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible.
#* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence.
# All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way.
#* He does not have to be human.
# The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities.
#* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people.
#* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe.
# Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls.
# Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things.
# Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses,
== Trivia ==
* TBA
== Related pages ==
TBA
7ff47503e5d10de9fa003a921e483cd4298a416c
Styles.css
0
248
494
2023-01-18T05:46:28Z
BEELETH
2
BEELETH created the page [[Styles.css]] using a non-default content model "Sanitized CSS": Necessary for TemplateStyles to function correctly
sanitized-css
text/css
da39a3ee5e6b4b0d3255bfef95601890afd80709
Module:Infobox/styles.css
828
183
495
360
2023-01-18T05:47:27Z
BEELETH
2
BEELETH changed the content model of the page [[Module:Infobox/styles.css]] from "plain text" to "Sanitized CSS": Necessary for TemplateStyles to function correctly
sanitized-css
text/css
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
File:Pixelevy.ico
6
249
498
2023-01-18T05:56:04Z
BEELETH
2
Everyman favicon
wikitext
text/x-wiki
== Summary ==
Everyman favicon
7bf1a85a17cd1b200c2daaa4681ec46c9b9d68bb
File:Pixelevy.png
6
250
499
2023-01-18T05:56:54Z
BEELETH
2
Everyman favicon, but as a png
wikitext
text/x-wiki
== Summary ==
Everyman favicon, but as a png
69f7dd01f3ba70e2c4066e8b15b2155716a0f609
File:Pixelevybig.png
6
251
500
2023-01-18T05:57:54Z
BEELETH
2
Everyman icon, but big
wikitext
text/x-wiki
== Summary ==
Everyman icon, but big
79218d1fb7fae5cada35b4dd902ddfbcf8bc6a20
File:Halbleh.png
6
252
501
2023-01-18T06:03:24Z
BEELETH
2
i'm so sorry
wikitext
text/x-wiki
== Summary ==
i'm so sorry
f2870e42e2e14e75237963641acd9b0e658594e8
Halberd (character)
0
166
502
497
2023-01-18T06:21:25Z
BEELETH
2
idk
wikitext
text/x-wiki
{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear/chub|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light golden-colored buckle, and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
d224b2d0597a3b1e8445ece5c56ffd66874acfe1
503
502
2023-01-18T06:23:13Z
BEELETH
2
yeah.........
wikitext
text/x-wiki
{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light golden-colored buckle, and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
d734da60a18717df8f9e8ac958bedff17ca1daeb
517
503
2023-01-19T00:30:45Z
BEELETH
2
idk!
wikitext
text/x-wiki
{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
* Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
** However, he is not actually a doctor.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
d589be7ef26fca5bd7a92a490c1809f2b3c324c4
526
517
2023-01-19T22:08:45Z
BEELETH
2
test
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=<h4>The topic of this article does not exist in the [[Vast Space]].</h4>
This [[non-canon]] page exists on the wiki because it is tied in some way to a creator (or otherwise notable person) within the Vast Space community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
* Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
** However, he is not actually a doctor.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
6b7e987e0574831c1c46bbeb8c32605176e2846e
527
526
2023-01-19T22:09:12Z
BEELETH
2
test
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because it is tied in some way to a creator (or otherwise notable person) within the Vast Space community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
* Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
** However, he is not actually a doctor.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
4089bccac5ffc7450d635e0d3855c6402896a68d
531
527
2023-01-19T22:13:11Z
BEELETH
2
test
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.|cat=Non-canon}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
* Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
** However, he is not actually a doctor.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
80c84159a26943a78106469976ca2fff27b7d4a0
533
531
2023-01-19T22:14:37Z
BEELETH
2
I CANT MAKE CATEGORY MBOXES WORK ARRGHHHH (removed category setting from mbox)
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
== Personality ==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
== Appearance ==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes ===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
* He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
** Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
** As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
* In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
* His eye color is brown.
== Creation and development ==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
== In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
== Abilities ==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
# '''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#* He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#* As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Trivia ==
* His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
** A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
* BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
* Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
** However, he is not actually a doctor.
== Related pages ==
* [[BEELETH]], Hal's real-world counterpart
* [[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
83be7ef79e68937ab1605722f6293c990d5a6126
547
533
2023-01-20T23:47:40Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
<small>''Not to be confused with [[BEELETH]].''</small>
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
==In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
*Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
**However, he is not actually a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
3f4d36fd634b0ca985fe0b439bddd2018ae48667
Sona
0
253
504
2023-01-18T21:20:05Z
BEELETH
2
Added redirect
wikitext
text/x-wiki
#REDIRECT [[Sonas]]
e4a8f81fc45e82b40f45dd4c131407cab67b79fc
506
504
2023-01-18T21:21:48Z
BEELETH
2
Changed redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Sonas]]
243f118ff5c465b75fc238f818f918f112dea089
Sonas
0
254
505
2023-01-18T21:21:05Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Sonas]]
243f118ff5c465b75fc238f818f918f112dea089
Category:Sonas
14
255
507
2023-01-18T21:24:07Z
BEELETH
2
Created page
wikitext
text/x-wiki
'''Sonas''' are a type of [[character]] that represent their real-world creator/owner. A sona may not always be an exact match to their associated person, but may have some (or none) of their characteristics, whether they are physical, emotional, or any other type of similarity.
71574aa39e30fde5c080ca2ebb3a9855508e2ff2
510
507
2023-01-18T21:26:51Z
BEELETH
2
Added category
wikitext
text/x-wiki
'''Sonas''' are a type of [[character]] that represent their real-world creator/owner. A sona may not always be an exact match to their associated person, but may have some (or none) of their characteristics, whether they are physical, emotional, or any other type of similarity.
[[Category:Characters]]
86f7bf5e78c01f92130008d48c59b18637b7ae45
511
510
2023-01-18T21:28:27Z
BEELETH
2
Added more text
wikitext
text/x-wiki
'''Sonas''' are a type of [[character]] that represent, embody, and/or resemble their real-world creator/owner. A sona may not always be an exact match to their associated person, but may have some (or none) of their characteristics, whether they are physical, emotional, or any other type of similarity.
They may or may not be canon to the Vast Space, but are still to be documented here when possible if they are relevant to someone active in the Vast Space community or the Vast Space Archives.
[[Category:Characters]]
3bae07e909bf84a43f94300cabd3ac328a77c1ff
Character
0
256
508
2023-01-18T21:24:37Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Characters]]
484708e16da02d73d88b729e91d6612ea46b6eed
Characters
0
257
509
2023-01-18T21:25:46Z
BEELETH
2
Added redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Characters]]
484708e16da02d73d88b729e91d6612ea46b6eed
Template:Mbox
10
258
512
2023-01-18T21:42:46Z
BEELETH
2
Copied from the Dev wiki
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
{{tl|mbox}} stands '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features.
==Basic usage==
The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below.
<pre style="overflow:auto;">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}
</pre>
==Full usage==
The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously.
{| class="wikitable" align="left" style="background:transparent; width=30%;"
!All parameters
|-
|<pre style="font-size:100%">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| imageright =
| smallimage =
| smallimageright =
| class =
| style =
| textstyle =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| text =
| smalltext =
| plainlinks = no
| removalnotice =
| cat =
| all =
| cat2 =
| all2 =
| cat3 =
| all3 =
}}
</pre>
|}
{{clear}}
==Common parameters==
=== ''name'' ===
The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}.
This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself.
=== ''small'' ===
The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article:
{{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}}
Otherwise the standard format will be produced:
{{mbox|nocat=true|text=This is the standard mbox format.}}
Other variations:
* For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all.
* For templates which should ''always'' be small, just specify {{Para|small|left}}.
* For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article.
To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together:
{{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}}
See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display).
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{mbox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues
}}
{{mbox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues,
}}
{{mbox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues
}}
{{mbox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues
}}
{{mbox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices
{{mbox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals
}}
{{mbox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices,
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
=== ''image'' ===
You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical.
Please note:
* If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.)
* If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area.
=== ''sect'' ===
Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc.
If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.
A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value.
=== ''issue'' and ''fix'' ===
The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words).
The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences.
When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines
When used stand-alone it produces the whole text:
But when used with |small=left it displays only the issue:
=== ''talk'' ===
Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki>
This parameter may then be used by an editor as follows:
* talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo.
* talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo
Notes:
* When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined.
* In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>.
* If the talk page does not exist, there will be no link, whatever the value of the parameter.
=== ''date'' ===
Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font.
Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined.
=== ''info'' ===
This parameter is for specifying additional information. Whatever you add here will appear after the date.
=== ''cat'' ===
This parameter defines a monthly cleanup category. If |cat=CATEGORY then:
* articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified.
* articles will be placed in '''Category:CATEGORY''' if the date is not specified.
For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]].
The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
=== ''all'' ===
The ''all'' parameter defines a category into which all articles should be placed.
The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
== Additional parameters ==
=== ''imageright'' ===
An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image.
=== ''smallimage'' and ''smallimageright'' ===
Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified.
=== ''class'' ===
Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated.
=== ''style'' and ''textstyle'' ===
Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>.
* ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box.
* ''textstyle'' relates to the text cell.
=== ''text'' and ''smalltext'' ===
Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead.
Customised text for the small format can be defined using ''smalltext''.
=== ''plainlinks'' ===
Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
=== ''cat2'', ''cat3'', ''all2'', and ''all3'' ===
* ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]].
* ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]].
== Technical notes ==
* If you need to use special characters in the text parameter then you need to escape them like this:
<syntaxhighlight lang="xml">
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</syntaxhighlight>
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
* The <code><div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that.
* The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
== TemplateData ==
<templatedata>
{
"params": {
"1": {},
"small": {
"label": "Small Mode",
"description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.",
"type": "string",
"suggestedvalues": [
"no",
"left"
]
},
"talk": {},
"date": {},
"name": {
"label": "Template Name",
"description": "The name parameter specifies the name of the template, without the Template namespace prefix. ",
"type": "string"
},
"type": {},
"image": {},
"sect": {},
"issue": {},
"fix": {},
"info": {},
"cat": {},
"all": {},
"imageright": {},
"class": {},
"text ": {},
"plainlinks": {},
"smallimage ": {},
"smallimageright": {},
"textstyle": {},
"style ": {},
"smalltext": {},
"cat2": {},
"cat3": {},
"all2": {},
"all3": {}
},
"paramOrder": [
"name",
"small",
"type",
"image",
"sect",
"issue",
"fix",
"talk",
"date",
"1",
"info",
"cat",
"all",
"imageright",
"class",
"text ",
"plainlinks",
"smallimage ",
"smallimageright",
"textstyle",
"style ",
"smalltext",
"cat2",
"cat3",
"all2",
"all3"
]
}
</templatedata>
<includeonly>[[Category:Notice templates]]</includeonly>
7b00ac1be5a47eeb858d5ff75f02906ce5d85ff2
514
512
2023-01-18T21:46:26Z
BEELETH
2
Fixing it maybe??
wikitext
text/x-wiki
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c262e205f85f774a23f74119179ceea11751d68e
Template:Mbox/doc
10
259
513
2023-01-18T21:43:59Z
BEELETH
2
Copied from the Dev wiki
wikitext
text/x-wiki
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{mbox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues
}}
{{mbox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues,
}}
{{mbox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues
}}
{{mbox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues
}}
{{mbox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices
{{mbox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals
}}
{{mbox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices,
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
a3f9151d1595360cfe96416e2e21d7aafe377045
516
513
2023-01-18T21:48:17Z
BEELETH
2
Woops!!!!!!!
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
{{tl|mbox}} stands '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features.
==Basic usage==
The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below.
<pre style="overflow:auto;">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}
</pre>
==Full usage==
The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously.
{| class="wikitable" align="left" style="background:transparent; width=30%;"
!All parameters
|-
|<pre style="font-size:100%">
{{mbox
| name =
| small = {{{small|}}}
| type =
| image =
| imageright =
| smallimage =
| smallimageright =
| class =
| style =
| textstyle =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| text =
| smalltext =
| plainlinks = no
| removalnotice =
| cat =
| all =
| cat2 =
| all2 =
| cat3 =
| all3 =
}}
</pre>
|}
{{clear}}
==Common parameters==
=== ''name'' ===
The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}.
This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself.
=== ''small'' ===
The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article:
{{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}}
Otherwise the standard format will be produced:
{{mbox|nocat=true|text=This is the standard mbox format.}}
Other variations:
* For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all.
* For templates which should ''always'' be small, just specify {{Para|small|left}}.
* For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article.
To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together:
{{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}}
See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display).
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{mbox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues
}}
{{mbox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues,
}}
{{mbox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues
}}
{{mbox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues
}}
{{mbox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices
{{mbox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals
}}
{{mbox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices,
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
=== ''image'' ===
You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical.
Please note:
* If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.)
* If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area.
=== ''sect'' ===
Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc.
If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.
A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value.
=== ''issue'' and ''fix'' ===
The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words).
The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences.
When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines
When used stand-alone it produces the whole text:
But when used with |small=left it displays only the issue:
=== ''talk'' ===
Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki>
This parameter may then be used by an editor as follows:
* talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo.
* talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo
Notes:
* When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined.
* In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>.
* If the talk page does not exist, there will be no link, whatever the value of the parameter.
=== ''date'' ===
Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font.
Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined.
=== ''info'' ===
This parameter is for specifying additional information. Whatever you add here will appear after the date.
=== ''cat'' ===
This parameter defines a monthly cleanup category. If |cat=CATEGORY then:
* articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified.
* articles will be placed in '''Category:CATEGORY''' if the date is not specified.
For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]].
The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
=== ''all'' ===
The ''all'' parameter defines a category into which all articles should be placed.
The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
== Additional parameters ==
=== ''imageright'' ===
An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image.
=== ''smallimage'' and ''smallimageright'' ===
Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified.
=== ''class'' ===
Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated.
=== ''style'' and ''textstyle'' ===
Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>.
* ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box.
* ''textstyle'' relates to the text cell.
=== ''text'' and ''smalltext'' ===
Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead.
Customised text for the small format can be defined using ''smalltext''.
=== ''plainlinks'' ===
Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
=== ''cat2'', ''cat3'', ''all2'', and ''all3'' ===
* ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]].
* ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]].
== Technical notes ==
* If you need to use special characters in the text parameter then you need to escape them like this:
<syntaxhighlight lang="xml">
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</syntaxhighlight>
{{mbox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
* The <code><div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that.
* The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
== TemplateData ==
<templatedata>
{
"params": {
"1": {},
"small": {
"label": "Small Mode",
"description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.",
"type": "string",
"suggestedvalues": [
"no",
"left"
]
},
"talk": {},
"date": {},
"name": {
"label": "Template Name",
"description": "The name parameter specifies the name of the template, without the Template namespace prefix. ",
"type": "string"
},
"type": {},
"image": {},
"sect": {},
"issue": {},
"fix": {},
"info": {},
"cat": {},
"all": {},
"imageright": {},
"class": {},
"text ": {},
"plainlinks": {},
"smallimage ": {},
"smallimageright": {},
"textstyle": {},
"style ": {},
"smalltext": {},
"cat2": {},
"cat3": {},
"all2": {},
"all3": {}
},
"paramOrder": [
"name",
"small",
"type",
"image",
"sect",
"issue",
"fix",
"talk",
"date",
"1",
"info",
"cat",
"all",
"imageright",
"class",
"text ",
"plainlinks",
"smallimage ",
"smallimageright",
"textstyle",
"style ",
"smalltext",
"cat2",
"cat3",
"all2",
"all3"
]
}
</templatedata>
<includeonly>[[Category:Notice templates]]</includeonly>
7b00ac1be5a47eeb858d5ff75f02906ce5d85ff2
Module:Message box/ombox.css
828
232
515
464
2023-01-18T21:47:30Z
BEELETH
2
BEELETH changed the content model of the page [[Module:Message box/ombox.css]] from "plain text" to "Sanitized CSS": Necessary for Mbox to function correctly
sanitized-css
text/css
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
Module:Mbox
828
71
518
141
2023-01-19T21:11:47Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
-- This Module is used for making templates based in the Lua language.
-- See more details about Lua in [[Help:Lua]].
-- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden.
-- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]].
local Mbox = require('Module:Mbox2')
-- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]]
-- The imported Module is overwritten locally to include default styling.
-- For a more flexible Mbox experience, delete the function below and import
-- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css
-- or paste (and modify as you like) its contents in your wiki's
-- [[MediaWiki:Wikia.css]] (see [[Help:Including_additional_CSS_and_JS]])
-- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox
-- for more customization inspiration
--
-- BEGIN DELETION HERE
--
local getArgs = require('Module:Arguments').getArgs
local localCSS = mw.loadData('Module:Mbox/data').localStyle
function Mbox.main(frame)
local args = getArgs(frame)
-- styles
local styles = {}
if args.bordercolor then
styles['border-left-color'] = args.bordercolor
elseif args.type then
styles['border-left-color'] = 'var(--type-' .. args.type .. ')'
end
if args.bgcolor then
styles['background-color'] = args.bgcolor
end
-- images
local image = args.image or ''
local imagewidth = args.imagewidth or '80px'
local imagelink = ''
if args.imagelink then
imagelink = '|link=' .. args.imagelink
end
local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink)
-- id for closure
local id = args.id or 'mbox'
local container = mw.html.create('div')
:addClass('mbox')
:addClass(args.class)
:css(styles)
:css(localCSS['mbox'])
:cssText(args.style)
local content = container:tag('div')
:addClass('mbox__content')
:css(localCSS['mbox__content'])
if args.image then
local image = content:tag('div')
:addClass('mbox__content__image')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__image'])
:wikitext(imagewikitext)
if args.collapsed then
image:addClass('mw-collapsed')
end
end
local contentwrapper = content:tag('div')
:addClass('mbox__content__wrapper')
:css(localCSS['mbox__content__wrapper'])
if args.header then
contentwrapper:tag('div')
:addClass('mbox__content__header')
:css(localCSS['mbox__content__header'])
:wikitext(args.header)
end
if args.text then
local text = contentwrapper:tag('div')
:addClass('mbox__content__text')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__text'])
:wikitext(args.text)
if args.collapsed then
text:addClass('mw-collapsed')
end
if args.comment then
text:tag('div')
:addClass('mbox__content__text__comment')
:css(localCSS['mbox__content__text__comment'])
:wikitext(args.comment)
end
end
contentwrapper:tag('span')
:addClass('mbox__close')
:addClass('mw-customtoggle-' .. id)
:css(localCSS['mbox__close'])
:attr('title', 'Dismiss')
if args.aside then
local aside = content:tag('div')
:addClass('mbox__content__aside')
:addClass('mw-collapsible')
:attr('id', 'mw-customcollapsible-' .. id)
:css(localCSS['mbox__content__aside'])
:wikitext(args.aside)
if args.collapsed then
aside:addClass('mw-collapsed')
end
end
return container
end
--
-- END DELETION HERE
--
-- The last line produces the output for the template
return Mbox
f007328e6ef6ce20b356f12eaf962e70afdeed50
519
518
2023-01-19T21:46:04Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705
Vast Space
0
247
520
496
2023-01-19T21:47:28Z
BEELETH
2
idk
wikitext
text/x-wiki
{{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse
* The Multiverse
* Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity)
* [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]]
* [[Sender Space]]
* [[Uncharted Space]]
* [[Anomaly Space]]
* [[World's End Timeline]]
* Several smaller, obscure Spaces}}
'''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws.
== Creation and development ==
The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years.
== In-universe history ==
It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it.
== Spatial characteristics ==
As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created.
# Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort.
#* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event.
#* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space.
# Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience.
# Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions.
# Humans usually exist at some point in each universe, but this is not always the case.
=== Laws ===
# Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible.
#* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence.
# All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way.
#* He does not have to be human.
# The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities.
#* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people.
#* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe.
# Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls.
# Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things.
# Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses,
== Trivia ==
* The Vast Space is the only deity-protected Space whose name does not reflect that of its associated deity.
== Related pages ==
TBA
9df323fa297c30fde9cf085c0e38fc53b45c7f87
Vast space
0
260
521
2023-01-19T21:47:57Z
BEELETH
2
created redirect
wikitext
text/x-wiki
#REDIRECT [[Vast Space]]
fad6b2cbf5f20171530745640e4ec3dd76402cac
Space
0
261
522
2023-01-19T21:48:13Z
BEELETH
2
Added redirect
wikitext
text/x-wiki
#REDIRECT [[Spaces]]
a3d0dafa5f46f329dfd1c7601a6192b1dc668d16
Module:Message box/ambox.css
828
262
523
2023-01-19T21:50:00Z
BEELETH
2
will it work? lets find out..........
sanitized-css
text/css
/* {{pp|small=y}} */
.ambox {
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
/* Single border between stacked boxes. Take into account base templatestyles,
* user styles, and Template:Dated maintenance category.
* remove link selector when T200206 is fixed
*/
.ambox + link + .ambox,
.ambox + link + style + .ambox,
.ambox + link + link + .ambox,
/* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */
.ambox + .mw-empty-elt + link + .ambox,
.ambox + .mw-empty-elt + link + style + .ambox,
.ambox + .mw-empty-elt + link + link + .ambox {
margin-top: -1px;
}
/* For the "small=left" option. */
/* must override .ambox + .ambox styles above */
html body.mediawiki .ambox.mbox-small-left {
/* @noflip */
margin: 4px 1em 4px 0;
overflow: hidden;
width: 238px;
border-collapse: collapse;
font-size: 88%;
line-height: 1.25em;
}
.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
.ambox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.5em;
width: 100%;
}
.ambox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.5em;
text-align: center;
}
.ambox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.5em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ambox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ambox .mbox-image-div {
width: 52px;
}
/* Hack around MobileFrontend being opinionated */
html.client-js body.skin-minerva .mbox-text-span {
margin-left: 23px !important;
}
@media (min-width: 720px) {
.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
}
}
29898fdc5160b39a8f580c76efe77afa1f6f58a4
Module:Category handler
828
263
524
2023-01-19T22:07:05Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- CATEGORY HANDLER --
-- --
-- This module implements the {{category handler}} template in Lua, --
-- with a few improvements: all namespaces and all namespace aliases --
-- are supported, and namespace names are detected automatically for --
-- the local wiki. This module requires [[Module:Namespace detect]] --
-- and [[Module:Yesno]] to be available on the local wiki. It can be --
-- configured for different wikis by altering the values in --
-- [[Module:Category handler/config]], and pages can be blacklisted --
-- from categorisation by using [[Module:Category handler/blacklist]]. --
-- --
--------------------------------------------------------------------------------
-- Load required modules
local yesno = require('Module:Yesno')
-- Lazily load things we don't always need
local mShared, mappings
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function trimWhitespace(s, removeBlanks)
if type(s) ~= 'string' then
return s
end
s = s:match('^%s*(.-)%s*$')
if removeBlanks then
if s ~= '' then
return s
else
return nil
end
else
return s
end
end
--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------
local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler
function CategoryHandler.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
-- Set the title object
do
local pagename = obj:parameter('demopage')
local success, titleObj
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
obj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
obj.title = mw.title.getCurrentTitle()
obj._usesCurrentTitle = true
end
end
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = obj:parameter(key)
value = trimWhitespace(value, true)
obj['_' .. key] = yesno(value)
end
do
local subpage = obj:parameter('subpage')
local category2 = obj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
end
if type(category2) == 'string' then
subpage = mw.ustring.lower(category2)
end
obj._subpage = trimWhitespace(subpage, true)
obj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
function CategoryHandler:parameter(key)
local parameterNames = self._data.parameters[key]
local pntype = type(parameterNames)
if pntype == 'string' or pntype == 'number' then
return self._args[parameterNames]
elseif pntype == 'table' then
for _, name in ipairs(parameterNames) do
local value = self._args[name]
if value ~= nil then
return value
end
end
return nil
else
error(string.format(
'invalid config key "%s"',
tostring(key)
), 2)
end
end
function CategoryHandler:isSuppressedByArguments()
return
-- See if a category suppression argument has been set.
self._nocat == true
or self._categories == false
or (
self._category2
and self._category2 ~= self._data.category2Yes
and self._category2 ~= self._data.category2Negative
)
-- Check whether we are on a subpage, and see if categories are
-- suppressed based on our subpage status.
or self._subpage == self._data.subpageNo and self.title.isSubpage
or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end
function CategoryHandler:shouldSkipBlacklistCheck()
-- Check whether the category suppression arguments indicate we
-- should skip the blacklist check.
return self._nocat == false
or self._categories == true
or self._category2 == self._data.category2Yes
end
function CategoryHandler:matchesBlacklist()
if self._usesCurrentTitle then
return self._data.currentTitleMatchesBlacklist
else
mShared = mShared or require('Module:Category handler/shared')
return mShared.matchesBlacklist(
self.title.prefixedText,
mw.loadData('Module:Category handler/blacklist')
)
end
end
function CategoryHandler:isSuppressed()
-- Find if categories are suppressed by either the arguments or by
-- matching the blacklist.
return self:isSuppressedByArguments()
or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end
function CategoryHandler:getNamespaceParameters()
if self._usesCurrentTitle then
return self._data.currentTitleNamespaceParameters
else
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
return mShared.getNamespaceParameters(
self.title,
mappings
)
end
end
function CategoryHandler:namespaceParametersExist()
-- Find whether any namespace parameters have been specified.
-- We use the order "all" --> namespace params --> "other" as this is what
-- the old template did.
if self:parameter('all') then
return true
end
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
for ns, params in pairs(mappings) do
for i, param in ipairs(params) do
if self._args[param] then
return true
end
end
end
if self:parameter('other') then
return true
end
return false
end
function CategoryHandler:getCategories()
local params = self:getNamespaceParameters()
local nsCategory
for i, param in ipairs(params) do
local value = self._args[param]
if value ~= nil then
nsCategory = value
break
end
end
if nsCategory ~= nil or self:namespaceParametersExist() then
-- Namespace parameters exist - advanced usage.
if nsCategory == nil then
nsCategory = self:parameter('other')
end
local ret = {self:parameter('all')}
local numParam = tonumber(nsCategory)
if numParam and numParam >= 1 and math.floor(numParam) == numParam then
-- nsCategory is an integer
ret[#ret + 1] = self._args[numParam]
else
ret[#ret + 1] = nsCategory
end
if #ret < 1 then
return nil
else
return table.concat(ret)
end
elseif self._data.defaultNamespaces[self.title.namespace] then
-- Namespace parameters don't exist, simple usage.
return self._args[1]
end
return nil
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- Used for testing purposes.
return {
CategoryHandler = CategoryHandler
}
end
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler.new(data, args)
if handler:isSuppressed() then
return nil
end
return handler:getCategories()
end
function p.main(frame, data)
data = data or mw.loadData('Module:Category handler/data')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = data.wrappers,
valueFunc = function (k, v)
v = trimWhitespace(v)
if type(k) == 'number' then
if v ~= '' then
return v
else
return nil
end
else
return v
end
end
})
return p._main(args, data)
end
return p
b74dd63857b24904ac452429b11213f18647471f
Module:Category handler/data
828
264
525
2023-01-19T22:07:57Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
-- This module assembles data to be passed to [[Module:Category handler]] using
-- mw.loadData. This includes the configuration data and whether the current
-- page matches the title blacklist.
local data = require('Module:Category handler/config')
local mShared = require('Module:Category handler/shared')
local blacklist = require('Module:Category handler/blacklist')
local title = mw.title.getCurrentTitle()
data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(
title.prefixedText,
blacklist
)
data.currentTitleNamespaceParameters = mShared.getNamespaceParameters(
title,
mShared.getParamMappings()
)
return data
abbc68048ff698e88dda06b64ecf384bbf583120
Non-canon
0
265
528
2023-01-19T22:09:32Z
BEELETH
2
redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Non-canon]]
c02a30ef40b2d3aa304fafe2eae60634c7637059
Module:Category handler/config
828
266
529
2023-01-19T22:12:11Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
--------------------------------------------------------------------------------
-- [[Module:Category handler]] configuration data --
-- Language-specific parameter names and values can be set here. --
-- For blacklist config, see [[Module:Category handler/blacklist]]. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- foo = 'parameter name', --
-- --
-- To add multiple names, you can use this format: --
-- --
-- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, --
--------------------------------------------------------------------------------
cfg.parameters = {
-- The nocat and categories parameter suppress
-- categorisation. They are used with Module:Yesno, and work as follows:
--
-- cfg.nocat:
-- Result of yesno() Effect
-- true Categorisation is suppressed
-- false Categorisation is allowed, and
-- the blacklist check is skipped
-- nil Categorisation is allowed
--
-- cfg.categories:
-- Result of yesno() Effect
-- true Categorisation is allowed, and
-- the blacklist check is skipped
-- false Categorisation is suppressed
-- nil Categorisation is allowed
nocat = 'nocat',
categories = 'categories',
-- The parameter name for the legacy "category2" parameter. This skips the
-- blacklist if set to the cfg.category2Yes value, and suppresses
-- categorisation if present but equal to anything other than
-- cfg.category2Yes or cfg.category2Negative.
category2 = 'category2',
-- cfg.subpage is the parameter name to specify how to behave on subpages.
subpage = 'subpage',
-- The parameter for data to return in all namespaces.
all = 'all',
-- The parameter name for data to return if no data is specified for the
-- namespace that is detected.
other = 'other',
-- The parameter name used to specify a page other than the current page;
-- used for testing and demonstration.
demopage = 'page',
}
--------------------------------------------------------------------------------
-- Parameter values --
-- These are set values that can be used with certain parameters. Only one --
-- value can be specified, like this: --
-- --
-- cfg.foo = 'value name' -- --
--------------------------------------------------------------------------------
-- The following settings are used with the cfg.category2 parameter. Setting
-- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2
-- is present but equal to anything other than cfg.category2Yes or
-- cfg.category2Negative then it supresses cateogrisation.
cfg.category2Yes = 'yes'
cfg.category2Negative = '¬'
-- The following settings are used with the cfg.subpage parameter.
-- cfg.subpageNo is the value to specify to not categorise on subpages;
-- cfg.subpageOnly is the value to specify to only categorise on subpages.
cfg.subpageNo = 'no'
cfg.subpageOnly = 'only'
--------------------------------------------------------------------------------
-- Default namespaces --
-- This is a table of namespaces to categorise by default. The keys are the --
-- namespace numbers. --
--------------------------------------------------------------------------------
cfg.defaultNamespaces = {
[ 0] = true, -- main
[ 6] = true, -- file
[ 12] = true, -- help
[ 14] = true, -- category
[100] = true, -- portal
[108] = true, -- book
}
--------------------------------------------------------------------------------
-- Wrappers --
-- This is a wrapper template or a list of wrapper templates to be passed to --
-- [[Module:Arguments]]. --
--------------------------------------------------------------------------------
cfg.wrappers = 'Template:Category handler'
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
373cd107b13a5b00e6a1b7e66a749f12502c849d
Module:Category handler/shared
828
267
530
2023-01-19T22:12:54Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
-- This module contains shared functions used by [[Module:Category handler]]
-- and its submodules.
local p = {}
function p.matchesBlacklist(page, blacklist)
for i, pattern in ipairs(blacklist) do
local match = mw.ustring.match(page, pattern)
if match then
return true
end
end
return false
end
function p.getParamMappings(useLoadData)
local dataPage = 'Module:Namespace detect/data'
if useLoadData then
return mw.loadData(dataPage).mappings
else
return require(dataPage).mappings
end
end
function p.getNamespaceParameters(titleObj, mappings)
-- We don't use title.nsText for the namespace name because it adds
-- underscores.
local mappingsKey
if titleObj.isTalkPage then
mappingsKey = 'talk'
else
mappingsKey = mw.site.namespaces[titleObj.namespace].name
end
mappingsKey = mw.ustring.lower(mappingsKey)
return mappings[mappingsKey] or {}
end
return p
d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5
Module:Category handler/blacklist
828
268
532
2023-01-19T22:14:01Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
-- This module contains the blacklist used by [[Module:Category handler]].
-- Pages that match Lua patterns in this list will not be categorised unless
-- categorisation is explicitly requested.
return {
'^Main Page$', -- don't categorise the main page.
-- Don't categorise the following pages or their subpages.
-- "%f[/\0]" matches if the next character is "/" or the end of the string.
'^Wikipedia:Cascade%-protected items%f[/\0]',
'^User:UBX%f[/\0]', -- The userbox "template" space.
'^User talk:UBX%f[/\0]',
-- Don't categorise subpages of these pages, but allow
-- categorisation of the base page.
'^Wikipedia:Template index/.*$',
-- Don't categorise archives.
'/[aA]rchive',
"^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$",
}
87469d7a9ef2a3c41b2bf04ae18f7c59a18fb855
BEELETH Wiki
0
2
534
3
2023-01-19T23:34:53Z
BEELETH
2
Reformatted page
wikitext
text/x-wiki
<div style="text-align: center; font-size: x-large; padding: 1em;">'''{{SITENAME}}'''</div>
{| style="width: 100% !important;"
|-
| style="border-top: 4px solid #6F6F6F; background-color: #F6F6F6; padding: 10px 15px;" | <div style="font-size:180%;">Welcome, traveller, to the Vast Space Archives...</div>
|}
{| style="width: 100%;"
| style="border-top: 4px solid #67540F; background-color: #FFFDF5; padding: 5px 15px 10px 15px; vertical-align:top;" |<h3> About this wiki</h3>
* This is the official public wiki for [[BEELETH]]'s shared character multiverse.
* All visitors are welcome to contribute as long as it is done in good faith.
* We've moved over from Fandom somewhat recently, so sorry for the mess! Feel free to help us make our pages readable, fix our templates/modules, or anything else.
* For more information, see our [[VAST SPACE ARCHIVES: Beeleth Wiki:About|"about" page]].
* Work in progress.
| rowspan="3" style="width:10px" |
| rowspan="3" style="border-top: 4px solid #180F67; background-color: #F7F6FF; padding: 5px 15px 10px 15px; width:30%; vertical-align:top;" |<h3><translate><!--T:14--> News</translate></h3>
*<translate><!--T:60--> July 2022: [[<tvar name=miraheze7year>Special:MyLanguage/Miraheze-7-year</tvar>|Miraheze celebrates its 7 year anniversary]]!</translate>
*<translate><!--T:51-->
June 2022: Miraheze upgraded to MediaWiki 1.38!</translate>
*<translate><!--T:59-->
January 2022: Miraheze deployed its [https://blog.miraheze.org/post/17/introducing_scsvg/ <tvar name=jan2022>'''own physical hardware''' with a UK-based colocation data centre service provider </tvar>]</translate> <translate> <!--T:56--> ''For archived news please see the [[<tvar name=newsarchive>Miraheze/News Archive</tvar>|news archive]].'' </translate>
|}
{|
| style="border-top: 4px solid #2C670F; background-color: #F8FFF5; padding: 5px 15px 10px 15px; vertical-align:top" |<h3><translate><!--T:16--> Contact us</translate></h3>
*<translate><!--T:17-->
IRC: [[<tvar name=irc>Special:MyLanguage/IRC</tvar>|#miraheze]] (recommended)</translate>
*<translate><!--T:44-->
Discord: https://miraheze.org/discord (recommended)</translate>
*<translate><!--T:32-->
Facebook: [<tvar name=fb>https://www.facebook.com/pages/Miraheze/1641434862735427</tvar> Miraheze]</translate>
*<translate><!--T:34-->
Twitter: [<tvar name=twtr>//twitter.com/miraheze</tvar> @miraheze]</translate>
*<translate><!--T:61--> Mastodon: [<tvar name=mast>https://mastodon.social/@miraheze</tvar> @miraheze]</translate>
*<translate><!--T:35-->
On-wiki: [[<tvar name=hc>Special:MyLanguage/Help center</tvar>|Help center]]</translate>
| rowspan="3" style="width:10px" |
| rowspan="3" style="border-top: 4px solid #67440F; background-color: #FFF2F6; padding: 5px 15px 10px 15px; width:30%; vertical-align:top;" |<h3><translate><!--T:27--> Contribute</translate></h3><translate><!--T:24--> Miraheze is entirely community-supported and has no advertising. We appreciate contributions of time, money, or expertise.</translate>
*<translate><!--T:25-->
[[<tvar name=contributing>Special:MyLanguage/Contributing</tvar>|Contributing]]; learn how you can use your knowledge and time to help us.</translate>
*<translate><!--T:26-->
[[<tvar name=donate>Special:MyLanguage/Donate</tvar>|Donate]]; a record of previous donations and costs are available [[<tvar name=fin>Special:MyLanguage/Finance</tvar>|here]].</translate>
|}
[[Category:{{SITENAME}}]]
__NOTOC__
fee5264c3b4075a0ac7167372d442f6faa1ee940
File:Beelethcreatura.png
6
269
535
2023-01-20T21:43:01Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
BEELETH
0
149
536
299
2023-01-20T21:59:19Z
BEELETH
2
Fixed page
wikitext
text/x-wiki
{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}
'''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* Category:Designed by BEELETH
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
3f557aef3b0cc6999772a682d84e2dfebc8a04e8
541
536
2023-01-20T22:06:47Z
BEELETH
2
Fixed broken link
wikitext
text/x-wiki
{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}
'''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
c348a8cdc3984313c7b3db42bcafe5d2b2c89fe6
Real person
0
270
537
2023-01-20T21:59:56Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Real people]]
eb6176bf6956c02dcfae88cba05f99fca2cf036a
Real people
0
271
538
2023-01-20T22:00:21Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[:Category:Real people]]
eb6176bf6956c02dcfae88cba05f99fca2cf036a
Category:Real people
14
272
539
2023-01-20T22:02:35Z
BEELETH
2
Created page
wikitext
text/x-wiki
People who exist in the real world can have articles about themselves on this wiki if they are a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Most pages about a person should only be created by them or should be made with their permission and input.
[[Category:Real]]
c06a92c39926c444848eaff78f4710ff268436a6
Category:Real
14
273
540
2023-01-20T22:05:05Z
BEELETH
2
Created page
wikitext
text/x-wiki
Articles within this category cover subjects or topics that predominantly or completely exist in the real world, such as [[real locations]] or [[real people]].
Pages about real things or people should be kept to a minimum as most [[Vast Space]]-related content is purely fictional, but pages can still be created if there is reason warranting them to exist, such as documenting certain events or describing contributors to the stories described here.
ce300b94fa0c4bf38a30ac971b0ff19c82392347
Halberd
0
274
542
2023-01-20T22:09:19Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[Halberd (character)]]
5e902739d24145f68919d8abf3e238aeeddd2b5f
Halberd (disambiguation)
0
275
543
2023-01-20T22:10:38Z
BEELETH
2
Created disambiguation page
wikitext
text/x-wiki
Halberd may refer to:
* [[BEELETH]]
* [[Halberd (character)]], one of BEELETH's sonas
[[Category:Disambiguation pages]]
a7bfb69e5bd2569dc7106ee39718f721a6a2d939
Template:Distinguish/doc
10
276
544
2023-01-20T22:14:38Z
BEELETH
2
HELP
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
This template renders a [[w:WP:HAT|hatnote]] intended to inform the reader of the existence of one or more pages whose title(s) bears a strong resemblance to the current article.
== Examples ==
This hatnote is generally used when readers have misspelled their desired title, and the error would be apparent by simply displaying the alternative term without further explanation. For example, consider a reader looking for the punctuation mark who instead ends up at [[coma]]:
<blockquote>[[Coma]] → {{Distinguish|Comma}}</blockquote>
Readers are presumed to recognize that they actually wanted ''comma'' by merely looking at the spelling, and this case generally requires no further explanation.
== TemplateData ==
<templatedata>
{
"params": {
"1": {
"label": "Name of article",
"description": "Name of article that you want to link to",
"type": "wiki-page-name",
"required": true
},
"2": {
"label": "Optional additional article to link",
"description": "Optional additional article to link",
"type": "wiki-page-name"
},
"3": {
"label": "Optional additional article to link",
"description": "Optional additional article to link",
"type": "wiki-page-name"
},
"4": {
"label": "Optional additional article to link",
"description": "Optional additional article to link",
"type": "wiki-page-name"
}
},
"description": "A hatnote used when there is an ambiguity in an article's title.",
"paramOrder": [
"1",
"2",
"3",
"4"
],
"format": "inline"
}
</templatedata>
f1b9d718a1a4791ff7277893be40f0b183e23917
Template:Distinguish
10
190
545
376
2023-01-20T22:15:39Z
BEELETH
2
HELP
wikitext
text/x-wiki
{{#if:{{{1|}}}
|{{hatnote|Not to be confused with [[:{{trim|{{{1}}}}}]]{{
#if: {{{3|}}}{{{4|}}}
| , [[:{{trim|{{{2}}}}}]], {{
#if: {{{4|}}}
| [[:{{trim|{{{3}}}}}]], or [[:{{trim|{{{4}}}}}]]
| or [[:{{trim|{{{3}}}}}]]
}}
| {{
#if: {{{2|}}}
| or [[:{{trim|{{{2}}}}}]]
}}
}}.}}
}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. -->
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
{{En-WP attribution notice|Template:Distinguish }}
</noinclude>
1064497f2985df64cf7d5ccf27aae51ee5a1386d
Module:Documentation/config
828
213
546
426
2023-01-20T22:19:55Z
BEELETH
2
HELP
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
d70e8b1402a2bbe08a1fef4b75d743e661af0c95
BEELETH
0
149
548
541
2023-01-20T23:48:39Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}<small>''Not to be confused with [[Halberd (character)|Halberd]] or [[Beeleth]].''</small>
'''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
0a489e5d075a891ae6e465994dc07d02d82fede3
Halberd (character)
0
166
549
547
2023-01-20T23:49:40Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}
<small>''Not to be confused with [[BEELETH]].''</small>
'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
==In-universe history ==
He does not have a backstory nor does he canonically exist in [[Vast Space]].
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
*Halberd White as a name is a reference to a voice line from Toontown spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion.
**However, he is not actually a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
b43d7909d2fec13641d9055f1d351b26754aeae7
590
549
2023-02-14T22:30:30Z
BEELETH
2
wikitext
text/x-wiki
<small>''Not to be confused with [[BEELETH]].''</small>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Gallery ==
''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
=== Reference images ===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
=== Name origin ===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
72abc0126fffdfd3b6465693755a200c3ef246b0
595
590
2023-03-14T20:38:00Z
BEELETH
2
moved mbox thingy further up
wikitext
text/x-wiki
<small>''Not to be confused with [[BEELETH]].''</small>{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Gallery ==
''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
=== Reference images ===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
=== Name origin ===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
b80a3ed1c2c5156c97ce9494b3d39985044c7c3a
596
595
2023-03-14T20:39:10Z
BEELETH
2
better now :)
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<small>''Not to be confused with [[BEELETH]].''</small>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
== Gallery ==
''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
=== Reference images ===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
=== Name origin ===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
707a336fc7d6c4a9c084bac50fde640820871cad
Category:Contributors
14
277
550
2023-01-20T23:52:39Z
BEELETH
2
Created page with "The pages in this category describe [[real people]] who have meaningfully contributed to the [[Vast Space]] in some way, whether they are doing it actively or have only done certain things for it. [[Category:Real people]] [[Category:Real]]"
wikitext
text/x-wiki
The pages in this category describe [[real people]] who have meaningfully contributed to the [[Vast Space]] in some way, whether they are doing it actively or have only done certain things for it.
[[Category:Real people]]
[[Category:Real]]
a6f4fc68cccc09643ec98027f72ec1a2bfb1be10
Parasite
0
278
551
2023-01-26T16:48:16Z
BEELETH
2
Redirected page to [[Parasites (disambiguation)]]
wikitext
text/x-wiki
#REDIRECT [[Parasites (disambiguation)]]
7d0c2e19d8942422d52eb0cc296b99c2a73dd119
Parasites
0
279
552
2023-01-26T16:48:42Z
BEELETH
2
Redirected page to [[Parasites (disambiguation)]]
wikitext
text/x-wiki
#REDIRECT [[Parasites (disambiguation)]]
7d0c2e19d8942422d52eb0cc296b99c2a73dd119
John Blunts
0
280
553
2023-01-26T16:53:09Z
BEELETH
2
placeholder
wikitext
text/x-wiki
{{Infobox|above=John Blunts}}
'''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', also simply referred to as '''John Blunts''', '''Mr. Blunts''', or a variety of other similar names, is the famous and wealthy founder and current owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]].
[[Category:Characters]]
f9e534fd14f7a4dcbb25cd24ecaa94c957eba2b2
556
553
2023-01-26T17:24:03Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts
* Johnny Blunts
* Mr. Blunts|label7=Genders and labels|data7=Uncertain|label8=Pronouns|data8=* he/him
* it/its|label9=Orientation|data9=Uncertain|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
'''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''' is the famous and wealthy founder and current owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]].
He is tied to [[Cream]] in some way that has not yet been established.
== Personality ==
Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating.
== Appearance ==
John Blunts is a [[furry]] llama with long, shaggy wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool.
He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body.
On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His main two palettes are a "pink lemonade" palette and a more creamy-colored palette.
** The Burning Super Death Sword's palette does not inherently change based on John's palette.
* He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles.
* The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style.
== Creation and development ==
Originally, John Blunts was created as a Roblox avatar.
== In-universe history ==
TBA
== Abilities ==
# '''Bending the laws of reality:''' TBA
# '''Wielding the Burning Super Death Sword:''' TBA
== Gallery ==
''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Johnpink.png|"Pink lemonade" palette
File:Johnwhite.png|"Cream" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
TBA
== Related pages ==
* [[Cream]]
[[Category:Characters]]
29870fb5f595f69ea19645bbc461464ffd82ed8a
557
556
2023-01-26T17:51:03Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts
* Johnny Blunts
* Mr. Blunts|label7=Genders and labels|data7=Cisgender male, himbo|label8=Pronouns|data8=* he/him
* it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
'''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]].
He is tied to [[Cream]] in some way that has not yet been established.
== Personality ==
Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating.
== Appearance ==
John Blunts is a [[furry]] llama with long, shaggy wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool.
He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body.
On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His main two palettes are a "pink lemonade" palette and a more creamy-colored palette.
** The Burning Super Death Sword's palette does not inherently change based on John's palette.
* He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles.
* The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style.
== Creation and development ==
Originally, John Blunts was created as a Roblox avatar.
== In-universe history ==
TBA
== Abilities ==
# '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored.
#* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power.
#** It can be assumed to be low-brow.
#* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, and death.
#** Despite its drug references, his name is always immune to censorship.
#** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him.
#** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]].
#** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use.
# '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him.
# '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person.
== Gallery ==
''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Johnpink.png|"Pink lemonade" palette
File:Johnwhite.png|"Cream" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* TBA
== Related pages ==
* [[Cream]]
[[Category:Characters]]
7483cdb74167d29132d7b2f79896ae3979a4d62d
563
557
2023-01-26T18:30:34Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts
* Johnny Blunts
* Mr. Blunts|label7=Genders and labels|data7=Cisgender male, himbo|label8=Pronouns|data8=* he/him
* it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
'''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe 4Kids Entertainment. He is also the wielder of the [[Burning Super Death Sword]].
He is tied to [[Cream]] in some way that has not yet been established.
== Personality ==
Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating.
== Appearance ==
John Blunts is a [[furry]] llama with long, shaggy wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool.
He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body.
On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His main two palettes are a "pink lemonade" palette and a more creamy-colored palette.
** The Burning Super Death Sword's palette does not inherently change based on John's palette.
* He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles.
* The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style.
== Creation and development ==
Originally, John Blunts was created as a Roblox avatar.
== In-universe history ==
TBA
== Abilities ==
# '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored.
#* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power.
#** It can be assumed to be low-brow.
#* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, and death.
#** Despite its drug references, his name is always immune to censorship.
#** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him.
#** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]].
#** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use.
# '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him.
# '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person.
== Gallery ==
''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Johnpink.png|"Pink lemonade" palette
File:Johnwhite.png|"Cream" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* TBA
== Related pages ==
* [[Cream]], John Blunts' dramatic foil
[[Category:Characters]]
[[Category:Stubs]]
[[Category:Furries]]
9350284403721c33e139927004b6d24fe3cf9096
576
563
2023-01-27T22:13:14Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts
* Johnny Blunts
* Mr. Blunts|label7=Genders and labels|data7=Unconfirmed gender (masculine), himbo|label8=Pronouns|data8=* he/him
* it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
'''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe [[4Kids Entertainment]]. He is also the wielder of the [[Burning Super Death Sword]].
He is tied to [[Cream]] in some way that has not yet been established.
== Personality ==
Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating.
He is quite oblivious to a lot of the things that go on around him.
== Appearance ==
John Blunts is a [[furry]] llama with long, shaggy two-toned wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a dog-like tail that also tends to wag when he is excited.
He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body.
On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially.
He is almost always seen wearing the same outfit consisting of a shirt with rolled-up sleeves, a vest, a tie, a belt, and bandages. It's very rare for him to wear pants or any actual clothing on his lower body.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His main two palettes are a "pink lemonade" palette and a more creamy-colored palette.
** The Burning Super Death Sword's palette does not inherently change based on John's palette.
* He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles.
* The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style.
* Though it's okay to draw him with the biologically correct amount of fingers and toes, it is preferred that he only has 3 digits on each foot and hand.
== Creation and development ==
Originally, John Blunts was created as a Roblox avatar.
== In-universe history ==
Not much about his life prior to founding 4Kids Entertainment is known.
=== Founding of 4Kids Entertainment ===
TBA
== Abilities ==
# '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored.
#* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power.
#** It can be assumed to be low-brow.
#* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, sexual content, and death.
#** Despite its drug references, his name is always immune to censorship.
#** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him.
#** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]].
#** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use.
# '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him.
# '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person.
== Gallery ==
''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Johnpink.png|"Pink lemonade" palette
File:Johnwhite.png|"Cream" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* Despite its name, the cream palette is not named after Cream, but rather just the colors used.
* The bandages on his legs were a last-minute design choice, and he was originally going to wear pants.
=== Name origin ===
John Blunts was given his first name because John feels very generic, meanwhile his last name was chosen because it sounded fun to say right after his first name. As well as that, it's an ironic drug reference given his censorship ability and kid-friendly career.
All of his middle names were chosen at random based on what sounded the most stupid.
== Related pages ==
* [[Cream]], John Blunts' dramatic foil
[[Category:Characters]]
[[Category:Stubs]]
[[Category:Furries]]
6e2b1aa12190179ddf027b8471ff3eb5996ffb50
File:Johnpink.png
6
281
554
2023-01-26T16:53:57Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Johnwhite.png
6
282
555
2023-01-26T16:54:12Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Cream
0
283
558
2023-01-26T17:54:29Z
BEELETH
2
Created page with "{{Infobox|above=Cream}} '''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a criminal. == Personality == TBA == Appearance == TBA == Creation and development == TBA == In-universe history == TBA == Abilities == TBA == Trivia == TBA == Related pages == * [[John Blunts]] [[Category:Characters]]"
wikitext
text/x-wiki
{{Infobox|above=Cream}}
'''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a criminal.
== Personality ==
TBA
== Appearance ==
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
TBA
== Trivia ==
TBA
== Related pages ==
* [[John Blunts]]
[[Category:Characters]]
e2d96b0c5057d8ef356471663cdfdfc425fb34c4
561
558
2023-01-26T18:26:42Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}}
'''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]].
== Personality ==
TBA
== Appearance ==
Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs.
Because of his heterochromia, his left eye is green while his right eye is blue.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork.
* He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it.
== Creation and development ==
Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences.
His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space).
== In-universe history ==
TBA
== Abilities ==
# TBA
== Trivia ==
* TBA
=== Name origins ===
Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role.
The invented last name DuCroppe was chosen because of the phrase "cream of the crop".
== Related pages ==
* [[John Blunts]], Cream's dramatic foil
* [[Medusa]], a [[pack]] leader in Tooth and Claw
[[Category:Characters]]
639e7d3ee121f9cd80d970f642ac3a1d5c99f770
562
561
2023-01-26T18:28:53Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}}
'''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]].
== Personality ==
TBA
== Appearance ==
Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs.
Because of his heterochromia, his left eye is green while his right eye is blue.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork.
* He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it.
== Creation and development ==
Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences.
His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space).
== In-universe history ==
TBA
== Abilities ==
# TBA
== Trivia ==
* TBA
=== Name origins ===
Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role.
The invented last name DuCroppe was chosen because of the phrase "cream of the crop".
== Related pages ==
* [[John Blunts]], Cream's dramatic foil
* [[Medusa]], a [[pack]] leader in Tooth and Claw
[[Category:Characters]]
[[Category:Stubs]]
714452a3badb36690f4fc3d58680574e5e4a6e2f
564
562
2023-01-26T18:30:57Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}}
'''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]].
== Personality ==
TBA
== Appearance ==
Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs.
Because of his heterochromia, his left eye is green while his right eye is blue.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork.
* He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it.
== Creation and development ==
Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences.
His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space).
== In-universe history ==
TBA
== Abilities ==
# TBA
== Trivia ==
* TBA
=== Name origins ===
Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role.
The invented last name DuCroppe was chosen because of the phrase "cream of the crop".
== Related pages ==
* [[John Blunts]], Cream's dramatic foil
* [[Medusa]], a [[pack]] leader in Tooth and Claw
[[Category:Characters]]
[[Category:Stubs]]
[[Category:Furries]]
ce9996648abedeb86873a0fafb2245f5cdf2b472
572
564
2023-01-26T22:31:06Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Cream|image=[[File:Cream.png|200px|Cream]]|header1=Creation and development|data2=Uncertain|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information}}
'''Cream DuCroppe''', usually referred to mononymously as '''Cream''', is a notorious mob boss who resides in [[New Pokopoko]]. He's the current leader of [[the Cavalry]].
== Personality ==
TBA
== Appearance ==
Cream is an off-white [[furry]] sheep with a large, curvy build. He is usually seen wearing revealling clothes, but will occasionally dress more appropriately for more serious situations. He's usually given fangs.
Because of his heterochromia, his left eye is green while his right eye is blue.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* The buttons on his main outfit's jacket depict a pink cat and a heart. The cat button is a reference to Professor Genki from the Saints Row series, though it does not have to actually depict him in artwork.
* He has a backpack, but tends to only wear one of the straps. He often holds onto it while wearing it.
== Creation and development ==
Cream was originally created as an avatar in Saints Row the Third at some point in 2021 and was planned to only exclusively be a Saints Row OC, but grew to become a canon character in the [[Uncharted Space]] around January 2023. After being moved, it was decided that Cream would be [[John Blunts]]' foil in some way due to their design similarities and drastic personal differences.
His original design is very similar to his current version, but lacks the backpack, has slightly different button designs, and has different colors. His main color was blue but was changed to purple to line up with the signature color of the Saints (despite them not canonically existing in the Uncharted Space).
== In-universe history ==
TBA
== Abilities ==
# TBA
== Trivia ==
* TBA
=== Name origins ===
Cream did not recieve a name until some time after he was already created; he was given the name Cream because of his wool color and the irony of a cutesy name paired with his design, personality, and in-universe role.
The invented last name DuCroppe was chosen because of the phrase "cream of the crop".
== Related pages ==
* [[John Blunts]], Cream's dramatic foil
* [[Medusa]], a [[pack]] leader in Tooth and Claw
[[Category:Characters]]
[[Category:Stubs]]
[[Category:Furries]]
[[Category:The Cavalry]]
[[Category:Uncharted Space]]
[[Category:New Pokopoko]]
738cda4fe69b944d50c06175da1d349e68fdeb4b
Cream DuCroppe
0
284
559
2023-01-26T18:02:45Z
BEELETH
2
Redirected page to [[Cream]]
wikitext
text/x-wiki
#REDIRECT [[Cream]]
8ae5815e78ee76eb50258de0ed147c3ea7d4168d
File:Cream.png
6
285
560
2023-01-26T18:04:21Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Module:If empty
828
323
639
2023-01-26T18:33:28Z
vast>MSGJ
0
lastk is not needed
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
for k,v in ipairs(args) do
if v ~= '' then
return v
end
end
end
return p
4790391408957dea3ff9f453834c05f6b379a45c
New Pokopoko
0
286
565
2023-01-26T19:57:57Z
BEELETH
2
Created page with "{{Infobox|above=New Pokopoko}} <small>''Not to be confused with [[Old Pokopoko]].''</small> '''New Pokopoko''', rarely referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It is the sister city of [[Gorgondel]]...."
wikitext
text/x-wiki
{{Infobox|above=New Pokopoko}}
<small>''Not to be confused with [[Old Pokopoko]].''</small>
'''New Pokopoko''', rarely referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters.
It is the sister city of [[Gorgondel]].
== Creation and development ==
Initially, New Pokopoko was created as a one-off location during an AI Dungeon session set in the Uncharted Space.
== In-universe history ==
TBA
== Geography ==
Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation.
=== Major areas and districts ===
TBA
==== New Pokopoko Main Gate ====
Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort.
==== Rainbow roads ====
The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings.
==== Orbits ====
Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all.
An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport.
Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery.
=== Architecture ===
New Pokopoko is physically walled off from the majority of its border and is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars.
The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia.
Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways.
==== Transportation ====
Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS].
The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them.
Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses.
=== Industries and economy ===
As do most other locations in
=== Climate ===
Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate.
Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side.
== Government ==
New Pokopoko is governed by the New Pokopoko City Council, which is openly heavily influenced by Bunjeecorp.
=== Militia ===
TBA
== Culture ==
TBA
== Trivia ==
* TBA
== Related pages ==
* [[Gorgondel]], New Pokopoko's sister city
* [[Gobu Canyon]], a nearby region
03b4a9bf768adf0567e0ef6a38e918a898e21352
566
565
2023-01-26T20:00:35Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=New Pokopoko}}
<small>''Not to be confused with [[Old Pokopoko]].''</small>
'''New Pokopoko''', rarely referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters.
It is the sister city of [[Gorgondel]].
== Creation and development ==
Initially, New Pokopoko was created as a one-off location during an AI Dungeon session set in the Uncharted Space.
== In-universe history ==
TBA
== Geography ==
Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation.
=== Major areas and districts ===
TBA
==== New Pokopoko Main Gate ====
Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort.
==== Rainbow roads ====
The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings.
==== Orbits ====
Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all.
An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport.
Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery.
=== Architecture ===
New Pokopoko is physically walled off from the majority of its border and is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars.
The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia.
Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways.
==== Transportation ====
Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS].
The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them.
Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses.
=== Industries and economy ===
As do most other locations in
=== Climate ===
Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate.
Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side.
== Government ==
New Pokopoko is governed by the New Pokopoko City Council, which is openly heavily influenced by Bunjeecorp.
=== Militia ===
TBA
== Culture ==
TBA
== Trivia ==
* TBA
== Related pages ==
* [[Gorgondel]], New Pokopoko's sister city
* [[Gobu Canyon]], a nearby region
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
23163f963024e946ff0ee43f735fd459384ddd61
586
566
2023-02-13T21:44:16Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from February 2023 (PLACEHOLDER, WILL ADD LATER)|image=[[File:Placeholder.png|200px|Placeholder]]}}
<small>''Not to be confused with [[Old Pokopoko]].''</small>
'''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters.
It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours.
== Creation and development ==
Initially, New Pokopoko was created as a one-off location during an AI Dungeon session set in the Uncharted Space.
== In-universe history ==
TBA
== Geography ==
Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation.
=== Major areas and districts ===
TBA
==== New Pokopoko Main Gate ====
Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort.
==== Rainbow roads ====
The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings.
==== Orbits ====
Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all.
An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport.
Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery.
=== Architecture ===
New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars.
The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia.
Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways.
==== Transportation ====
Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS].
The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them.
Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses.
===== OPTRASYS =====
<small>''See [[OPTRASYS]] for more information.''</small>
OPTRASYS (Optimized Transport System) is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system.
In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel.
=== Industries and economy ===
As do most other locations in
=== Climate ===
Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate.
Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side.
== Government ==
New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC.
=== Militia ===
TBA
== Culture ==
TBA
'''personal notes for later'''
* figure out what everyones deal w unicorns is
* how exactly does everyone feel about gorgondel anyway
* do people actually like bunjeecorp
* alchemy??? do people even know what it is here????
** kineticism as a whole actually
== Trivia ==
* TBA
=== Name origin ===
The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound. New Pokopoko was created before Old Pokopoko, and the latter derives its name from the former.
In canon, however, New Pokopoko derives its name from Old Pokopoko.
== Related pages ==
* [[Gobu Canyon]], a nearby region
* [[Gorgondel]], New Pokopoko's sister city
* [[Old Pokopoko]], New Pokopoko's predecessor
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
520d1eeb2291be67c505600a321aa7da9d64eefd
593
586
2023-02-17T00:50:45Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from February 2023 (PLACEHOLDER, WILL ADD LATER)|image=[[File:Placeholder.png|200px|Placeholder]]}}
<small>''Not to be confused with [[Old Pokopoko]].''</small>
'''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It was built over [[Old Pokopoko]].
It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours.
== Creation and development ==
Initially, New Pokopoko was created in November 2022 as a one-off location during an AI Dungeon session set in the Uncharted Space. Many locations, characters, and events from the session were used as inspiration for [[Heavenly Beast|''Heavenly Beast'']].
optimistic dystopia
== In-universe history ==
The [[location]] now known as New Pokopoko is one of the first known places in the Uncharted Space to enter the Light Side. Alchemists that were banished from [[Citadelonia]] or simply wished to practice alchemy in secret travelled northward, splitting into two similar yet distinct groups that would later found Old Pokopoko and Gorgondel.
At least five years prior to ''Heavenly Beast'', Bunjeecorp gave the opportunity to a select few New Pokopokans to become cyborgs; two of these citizens were [[C.C.]] and [[Pollyanna]].
=== ''Heavenly Beast'' ===
Along with [[Remudon]] and [[Hypnosen]], the [[Circle of Royal Knights]] temporarily stops at New Pokopoko while hunting down the [[Heaven Dragon]]. They are personally greeted at the New Pokopoko Main Gate by [[Woolf]].
=== ''A Wicked Storm Comes'' ===
While New Pokopoko is not a major location during ''[[A Wicked Storm Comes]]'', certain events do occur at the same time as the story.
(ill add them later im very tired of writing an article about a fictional city on and off)
== Geography ==
Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation.
=== Major areas and districts ===
TBA
==== New Pokopoko Main Gate ====
Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort.
==== Rainbow roads ====
The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings.
==== Orbits ====
Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all.
An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport.
Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery.
=== Architecture ===
New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars.
The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia.
Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways.
==== Transportation ====
Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [NOTE TO SELF: COME UP WITH NAMES FOR THE TELEPORTING PLATFORMS]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than [TELEPORTING PLATFORMS].
The [TELEPORTING PLATFORMS] used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them.
Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses.
===== Optimized Transport System (OPTRASYS) =====
<small>''See [[OPTRASYS]] for more information.''</small>
OPTRASYS is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system.
In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel.
=== Industries and economy ===
TBA
=== Climate ===
Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate.
Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side.
== Government ==
New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC.
=== Militia ===
TBA
== Culture ==
TBA
'''personal notes for later'''
* figure out what everyones deal w unicorns is
* how exactly does everyone feel about gorgondel anyway
* do people actually like bunjeecorp
* alchemy??? do people even know what it is here????
** kineticism as a whole actually
== Trivia ==
* New Pokopoko was conceptualized ''before'' Old Pokopoko, despite the name.
=== Name origin ===
The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound.
In canon, however, New Pokopoko derives its name from Old Pokopoko.
== Related pages ==
* [[Gobu Canyon]], a nearby region
* [[Gorgondel]], New Pokopoko's sister city
* [[Old Pokopoko]], the past version of New Pokopoko
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
30f26d961fc3ddc63604c4723a60fa4bf06df13f
Category:Locations in Uncharted Space
14
287
567
2023-01-26T20:01:45Z
BEELETH
2
Created page with "The articles in this category describe locations in the [[Uncharted Space]]. [[Category:Locations]] [[Category:Uncharted Space]]"
wikitext
text/x-wiki
The articles in this category describe locations in the [[Uncharted Space]].
[[Category:Locations]]
[[Category:Uncharted Space]]
a12a8a1d118e406866201ced9ee7501f36a0ca36
Vast Space
0
247
568
520
2023-01-26T20:06:16Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse
* The Multiverse
* Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity)
* [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]]
* [[Sender Space]]
* [[Uncharted Space]]
* [[Anomaly Space]]
* [[World's End Timeline]]
* Several smaller, obscure Spaces}}
'''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws.
== Creation and development ==
The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years.
== In-universe history ==
It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it.
== Spatial characteristics ==
As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created.
# Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort.
#* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event.
#* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space.
# Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience.
# Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions.
# Humans usually exist at some point in each universe, but this is not always the case.
=== Laws ===
# Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible.
#* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence.
# All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way.
#* He does not have to be human.
# The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities.
#* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people.
#* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe.
# Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls.
# Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things.
# Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses,
== Trivia ==
* The Vast Space is the only deity-protected Space whose name does not reflect that of its associated deity.
== Related pages ==
TBA
[[Category:Vast Space]]
[[Category:Spaces]]
cb47cd399c5fe8b68cbf5f412275ff2c7ab21306
Uncharted Space
0
288
569
2023-01-26T20:14:26Z
BEELETH
2
Created page with "{{Infobox|above=Uncharted Space}} '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it. == Creation and development == In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space'..."
wikitext
text/x-wiki
{{Infobox|above=Uncharted Space}}
'''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
TBA
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# TBA
=== Characteristics ===
# TBA
== Trivia ==
* TBA
== Related pages ==
* TBA
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
584208fd02bb5621b0e2ccff14982d24b55cce48
570
569
2023-01-26T22:27:07Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}}
The '''Uncharted Space''', originally mainly referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
TBA
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area).
=== Laws ===
# All laws of the Vast Space also apply to the Uncharted Space whenever possible.
# There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next.
# The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers have returned.
== Trivia ==
* As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream.
* The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone.
** The first Zone was the [[Calamity Zone]], which is now of dubious canon.
== Related pages ==
* [[Calamity Zone]]
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
8063ad63f06df5139d07140379b48ae0f73c15b4
Category:Characters
14
289
571
2023-01-26T22:30:01Z
BEELETH
2
Created page with "On this wiki, characters are the people represented in stories that take place in stories that may or may not be canon to the Vast Space; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]]."
wikitext
text/x-wiki
On this wiki, characters are the people represented in stories that take place in stories that may or may not be canon to the Vast Space; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]].
9ed48da63335a57215beb2073ecf8ed9b968f626
Beeleth
0
290
573
2023-01-27T19:49:59Z
BEELETH
2
Created redirect
wikitext
text/x-wiki
#REDIRECT [[King Beeleth]]
9bfa365dd4a5e6fe3d7ed91e668364015e9141e2
File:Cc.png
6
291
574
2023-01-27T19:58:56Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
John
0
292
575
2023-01-27T20:01:50Z
BEELETH
2
Redirected page to [[John Blunts]]
wikitext
text/x-wiki
#REDIRECT [[John Blunts]]
f05786b46e917889f8f5548cd34236d20ab669d0
C.C.
0
293
577
2023-01-27T22:22:34Z
BEELETH
2
Created page with "{{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}} '''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] by [[Bunjeecorp]]. == Personality == He's very shy. == Appearance == C.C. is a human-cyborg. === Other design notes === TBA == Creation and development == TBA == In-universe histor..."
wikitext
text/x-wiki
{{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}}
'''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] by [[Bunjeecorp]].
== Personality ==
He's very shy.
== Appearance ==
C.C. is a human-cyborg.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
TBA
== Gallery ==
''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>''
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origins ===
TBA
== Related pages ==
* TBA
ceebc8058caf0f8a16aa8f113832fafefeb9bea9
578
577
2023-01-27T22:30:28Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}}
'''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] by [[Bunjeecorp]].
== Personality ==
He's very shy.
== Appearance ==
C.C. is a human-cyborg.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
TBA
== Gallery ==
''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>''
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origins ===
TBA
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Humans]]
[[Category:Cyborgs]]
[[Category:Uncharted Space]]
[[Category:Bunjeecorp]]
a309138b2232b4ac568b2af92c7a6f66de1478b4
591
578
2023-02-14T23:15:54Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}}
'''C.C.''', also known as '''California Pettibon Michaels''', is a [[human]] who was turned into a [[cyborg]] as part of an experiment by [[Bunjeecorp]] alongside his friend [[Pollyanna]] at least five years prior to the beginning of ''[[Heavenly Beast]]''. He now works for the corporation as a company propaganda agent, but wishes he could return to life before he was converted.
== Personality ==
He's very shy.
== Appearance ==
C.C. is a human-cyborg of slightly shorter than average stature; he has short, somewhat curly cyan hair and a deathly pale complexion. A cowlick emerges along where his hair is parted on the right side. His eyes are cyan as well and have a straight, horizontal line and bar across the irises that resemble a stylized shadow. His left eye is often covered with a patch, and he wears ruffled ear coverings.
=== Other design notes ===
C.C. is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His metal casing is purple, and covers up everything below his head. He sometimes wears white gloves or white fullbody suits to cover up his metal.
** His internal metal color is generally grayish.
* His ear coverings are optional, and cover up metallic nubs where his ears would be.
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# '''Being nearly immortal:''' As he is no longer technically alive, C.C. is unable to die from natural causes. He will continue to live for as long as his internal is maintained.
#* He can safely enter stasis if he is low on power.
#* Decomposition and aging of his organic parts is impossible as long he has enough nanonectar flowing through his .
#
== Gallery ==
''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>''
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origins ===
TBA
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Humans]]
[[Category:Cyborgs]]
[[Category:Uncharted Space]]
[[Category:Bunjeecorp]]
[[Category:Stubs]]
bff9dbf4ff1ec4ea42280b7cf2d950862a5a8430
594
591
2023-02-17T00:50:50Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=C.C.|image=[[File:Cc.png|200px|C.C.]]|header1=Creation and development|label2=Development|data2=Uncertain|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)}}
'''C.C.''', also known as '''California Pettibon Michaels''' or '''Closed Captions''', is a [[human]] who was turned into a [[cyborg]] as part of an experiment by [[Bunjeecorp]] alongside his friend [[Pollyanna]] at least five years prior to the beginning of ''[[Heavenly Beast]]''. He now works for the corporation as a company propaganda agent, but wishes he could return to life before he was converted.
== Personality ==
He is introverted and passive, failing to assert himself when pushed around; Polly is often the one who stands up for him, though [[Kors]] filled this role while C.C. was still human.
== Appearance ==
C.C. is a human-cyborg of slightly shorter than average stature; he has short, somewhat curly cyan hair and a deathly pale complexion. A cowlick emerges along where his hair is parted on the right side. His eyes are cyan as well and have a straight, horizontal line and bar across the irises that resemble a stylized shadow. His left eye is often covered with a patch, and he wears ruffled ear coverings.
=== Other design notes ===
C.C. is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His metal casing is purple, and covers up everything below his head. He sometimes wears white gloves or white fullbody suits to cover up his metal.
** His internal metal color is generally grayish.
* His ear coverings are optional, and cover up metallic nubs where his ears would be.
== Creation and development ==
C.C. was created sometime in the mid-2010s by BEELETH, and has seen varied use since his creation. Though his history and role in each story has changed many times, his basic personality and much of his design has been retained over the years.
=== Initial incarnation ===
Prior to the creation of the [[Vast Space]] and the majority of stories that would come to take place within it, C.C. was originally a JoJo's Bizarre Adventure OC. This incarnation of him was younger and was fully human; he was an orphan who was taken under fellow orphan Polly's wing, and was taught to live on the streets and avoid getting into trouble. He was opposed by Kors, who was then known as Kosame, as well as his various underlings.
C.C.'s stand was
=== Galfleet Heaven incarnation ===
TBA
=== Current incarnation ===
TBA
== In-universe history ==
TBA
== Connections ==
=== Kors ===
TBA
=== Pollyanna ===
TBA
=== Mill ===
TBA
== Abilities ==
# '''Being nearly immortal:''' As he is no longer technically alive, C.C. is unable to die from natural causes. He will continue to live for as long as his internal mechanisms are maintained.
#* He can safely enter stasis if he is low on power. He can regain power by eating food, absorbing energy, and/or
#* Though his casing is about as strong as those of the [[Special Models]], it can still be damaged. He was not optimized for combat or durability beyond everyday activity.
#* Decomposition and aging of his organic parts is impossible as long he has enough [[nanonectar]] cycling through his system.
#'''Having enhanced senses and brain power:''' TBA
#*He is also technically stronger now that he is a cyborg, but does not often utilize his strength solely because he
#'''Being able to remotely access (and be accessed by) other machinery/devices:''' TBA
== Gallery ==
''<small>[[C.C./Gallery|Click here to see C.C.'s full gallery.]]</small>''
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origins ===
TBA
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Humans]]
[[Category:Cyborgs]]
[[Category:Uncharted Space]]
[[Category:Bunjeecorp]]
[[Category:Stubs]]
6635ab2cfc1e46144fb7cbd820807099c378a8d7
File:Origin2.png
6
294
579
2023-01-31T23:44:41Z
BEELETH
2
2023 redesign of Origin
wikitext
text/x-wiki
== Summary ==
2023 redesign of Origin
72ceb2e2138199050de52b649b4b5e80e54346cb
Origin
0
295
580
2023-02-01T00:25:13Z
BEELETH
2
Created page with "{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development}} '''Origin''' is the name often used to refer to the original Auophian god, who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way. == Personality == TBA == Appearance == By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. A sta..."
wikitext
text/x-wiki
{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development}}
'''Origin''' is the name often used to refer to the original Auophian god, who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way.
== Personality ==
TBA
== Appearance ==
By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals.
A star-like object known as the [[Origin point]] floats above his head between his antlers.
=== Biology and physical function ===
Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power.
The function of each of his organs is not entirely known, but they can all be observed from outside his body.
* The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him.
** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae.
* Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers.
His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have.
* His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull.
* There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them.
* They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
TBA
== Gallery ==
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* Origin is the only deity to reign a Space that does not contain its associated deity's name.
=== Name origin ===
He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it.
== Related pages ==
* [[Vast Space]]
[[Category:Characters]]
[[Category:Vast Space]]
[[Category:Deities]]
[[Category:Greater deities]]
[[Category:Stubs]]
e2115d0f4279c991d21f69d00388af7a7ae90200
583
580
2023-02-01T17:42:39Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created)
* January 2022 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin
* Rykha'uophi-konu}}
'''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity.
It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is.
== Personality ==
It is hard to discern what kind of personality Origin has.
=== Voice ===
Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once.
== Appearance ==
By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent.
A star-like object known as the [[Origin point]] floats above his head between his antlers.
=== Biology and physical function ===
Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power.
The function of each of his organs is not entirely known, but they can all be observed from outside his body.
* The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him.
** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae.
* Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers.
His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have.
* His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull.
* There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them.
* They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title.
=== Name origins ===
He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it.
His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract.
== Related pages ==
* [[Vast Space]]
[[Category:Characters]]
[[Category:Vast Space]]
[[Category:Deities]]
[[Category:Greater deities]]
[[Category:Stubs]]
7583158d80756ebaa1250074112895e16081a301
584
583
2023-02-10T21:32:55Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created)
* January 2022 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin
* Rykha'uophi-konu}}
'''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity.
It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is.
== Personality ==
It is hard to discern what kind of personality Origin has.
=== Voice ===
Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once.
== Appearance ==
By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent.
A star-like object known as the [[Origin point]] floats above his head between his antlers.
=== Biology and physical function ===
Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power.
The function of each of his organs is not entirely known, but they can all be observed from outside his body.
* The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him.
** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae.
* Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers.
His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have.
* His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull.
* There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them.
* They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
=== Recognized palettes ===
TBA
=== Reference images ===
TBA
== Trivia ==
* Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title.
* He is also the only deity known to produce two types of ichor.
=== Name origins ===
He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it.
His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract.
== Related pages ==
* [[Vast Space]]
[[Category:Characters]]
[[Category:Vast Space]]
[[Category:Deities]]
[[Category:Greater deities]]
[[Category:Stubs]]
68b0b295453ecac14009fd3e76952619cb26fa8b
Godskull
0
296
581
2023-02-01T00:53:14Z
BEELETH
2
Created page with "{{Infobox|above=Godskull}} '''Godskull''' is a type of material only naturally found in the skeletal structure of Auophian deities; each deity has a different type of godskull associated with them, but they are all often simply referred to as godskull unless it is important enough to make a distinction. Despite their name, godskulls do not exclusively refer to the cranial structure of the deities, but instead refer to all bone-like structures that exist in, on, or aroun..."
wikitext
text/x-wiki
{{Infobox|above=Godskull}}
'''Godskull''' is a type of material only naturally found in the skeletal structure of Auophian deities; each deity has a different type of godskull associated with them, but they are all often simply referred to as godskull unless it is important enough to make a distinction. Despite their name, godskulls do not exclusively refer to the cranial structure of the deities, but instead refer to all bone-like structures that exist in, on, or around them that are made of the same material.
== Properties ==
The visual characteristics and textures of godskull vary depending on which deity it is sourced from as well as what part of their body it originates from. An unused, empty cranial godskull will appear white and may have completely darkened sockets or openings. Auophian deities may spawn from empty godskulls, or may create their own as they spawn from [[Origin ichor]]. Regardless, they will often totally change the structure and properties of the godskull they adorn/contain.
=== Physical properties ===
In the [[Uncharted Space]], godskull is known by warriors, collectors, and anyone else with an eye for rare material for its astounding strength and anti-fae characteristics. It's nearly impossible to come by, however, due to the fact that most deities prefer to keep their skeleton intact and most do not have any reason to shed any of their godskull.
Godskull can only be cut by godskull, so given its rarity, it is almost never reshaped from the condition it is found in but is instead repurposed into whatever tool, adornment, or decoration its owner desires; it's also important to note that most cranial godskulls are much too large for anyone human-sized to wear, so it must be used creatively. Wherever a cranial godskull is found, it is often left in place and turned into a home that is able to withstand all types of weather and attacks.
=== Kinetic properties ===
TBA
==== Alchemic properties ====
TBA
== In-universe history ==
TBA
[[Category:Materials]]
[[Category:Stubs]]
6ccb19cd0090001bea8070f1d93df2f9e264d929
Godskulls
0
297
582
2023-02-01T00:53:39Z
BEELETH
2
Redirected page to [[Godskull]]
wikitext
text/x-wiki
#REDIRECT [[Godskull]]
496376f076f3655369bd74b54cb8cd5e7504dab9
Category:Locations
14
298
585
2023-02-13T18:41:47Z
BEELETH
2
Created page with "'''Locations''' are places throughout [[Vast Space]] that are generally notable enough in some way to be granted their own names, whether they are officially recognized or merely just common; these places may be general and vague in terms of the location's spread, or they may have obvious boundaries (walls, bodies of water, geological structures, etc.) that are used as markers for the location's end. These locations may also merely be [[landmarks]], meaning they are rec..."
wikitext
text/x-wiki
'''Locations''' are places throughout [[Vast Space]] that are generally notable enough in some way to be granted their own names, whether they are officially recognized or merely just common; these places may be general and vague in terms of the location's spread, or they may have obvious boundaries (walls, bodies of water, geological structures, etc.) that are used as markers for the location's end.
These locations may also merely be [[landmarks]], meaning they are recognizable structures that aren't entirely a region but just a point of reference or importance.
1689fd636ae6e38ec751b6bd4d3c5f207dca51bc
MediaWiki:Robots.txt
8
299
587
2023-02-14T20:26:04Z
BEELETH
2
we can now be searched devioius emoji
wikitext
text/x-wiki
User-agent: *
Allow: /wiki/
Disallow: /wiki/Template:
Disallow: /wiki/Module:
9fcf7150b96652a1bec100a9ad2d3b33759cdc13
Palette
0
300
588
2023-02-14T20:53:04Z
BEELETH
2
Redirected page to [[Palettes]]
wikitext
text/x-wiki
#REDIRECT [[Palettes]]
2ea169c76c557d718a5912e474c61ff3e2af465d
File:Men.png
6
301
589
2023-02-14T22:05:33Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
CC
0
302
592
2023-02-14T23:16:22Z
BEELETH
2
Redirected page to [[C.C.]]
wikitext
text/x-wiki
#REDIRECT [[C.C.]]
cbc5d86576091a5421f93ed9ef2c341fd4eff613
Beastman
0
303
597
2023-03-14T20:40:08Z
BEELETH
2
Redirected page to [[Beastmen]]
wikitext
text/x-wiki
#REDIRECT [[Beastmen]]
b0ed368aefb5670c3889cd8ebf198fa79c85c094
Beastmen
0
304
598
2023-03-14T20:40:59Z
BEELETH
2
created page
wikitext
text/x-wiki
placeholder text
[[Category:Species]]
[[Category:Stubs]]
2acbd63bdc36090405907d178edf3be22684a1da
612
598
2023-04-03T15:48:48Z
BEELETH
2
wikitext
text/x-wiki
'''Beastmen''' are a typically bipedal, widely varied race. Generally, they only exist in the Uncharted Space.
[[Category:Species]]
[[Category:Stubs]]
[[Category:Beastmen]]
577d0eaad755bffbfd9c30464850c7203f1043ac
614
612
2023-04-03T15:56:28Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Beastmen}}
'''Beastmen''' are a species native to the [[Uncharted Space]]. However, they may potentially appear elsewhere in [[Vast Space]] in the case of a [[spatial anomaly]] or [[coincidental convergence]]. They often resemble or have the characteristics of animals or other beasts to varying degrees based on their heritage and/or environment. As a rule of thumb, a beastman will generally have improved physical strength, [[kinetic]] potential, and senses compared to [[humans]] and beasts.
[[Category:Species]]
[[Category:Stubs]]
[[Category:Beastmen]]
4ba5c1f5a38f9c84cf64ba9e7125dae58f5bb12a
615
614
2023-04-03T22:39:11Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Beastmen}}
'''Beastmen''' are a species native to the [[Uncharted Space]]. However, they may potentially appear elsewhere in [[Vast Space]] in the case of a [[spatial anomaly]] or [[coincidental convergence]]. They often resemble or have the characteristics of animals or other beasts to varying degrees based on their heritage and/or environment. As a rule of thumb, a beastman will generally have improved physical strength, [[kinetic]] potential, and senses compared to [[humans]] and beasts.
== In-universe history ==
TBA
== Species merits ==
The individuals within any species will vary, so this list is not to be taken at face value. Rather, this is a general representation of what beastmen are biologically predisposed to, or are otherwise known for.
=== Strengths ===
* Compared to humans and beasts, beastmen tend to have extra or improved:
*# '''Physical strength:''' More animalistic beastmen will often have increased physical strength, especially in emotional situations.
*# '''Kinetic potential:''' Not every beastman is capable of natural or learned kineticism, but it is more common for them to develop these abilities. Common forms of naturally developed kineticism in beastmen are (WILL ADD LATER).
*# '''Senses:''' TBA
* TBA
=== Weaknesses ===
* For better or for worse, beastmen are more susceptible to getting caught in their own emotions as well as others' emotions.
* TBA
=== Other species-related notes ===
TBA
== Trivia ==
* TBA
=== Etymology ===
"Beastman" is a combination of "beast" and "man", much like the species itself. Within the Vast Space's continuity, it is entirely used in a gender-neutral context, but "beastwoman" is still an acceptable term. There is no currently designated non-binary term for the species and there are no plans to coin one, as it has not been deemed necessary (though this may change in the future).
== Related pages ==
* TBA
[[Category:Species]]
[[Category:Stubs]]
[[Category:Beastmen]]
[[Category:Uncharted Space]]
b7b1a83061bc550a7b878063583ec9841958fa75
Category:Species
14
305
599
2023-03-14T20:50:51Z
BEELETH
2
created page
wikitext
text/x-wiki
Species are the largest possible groups of organisms that are capable of producing viable offspring. Subspecies are beneath species in the taxonomic hierarchy, and are capable of interbreeding within the same species category but tend to not do so, choosing to reproduce with the same subspecies instead.
For simplicity's sake, a subspecies should not be given its own page unless they are notably distinct from their encompassing species or from other subspecies in the same species category.
310ccbeab0bfd9875e798c4376b8d74b1afd9884
601
599
2023-03-14T20:53:23Z
BEELETH
2
wikitext
text/x-wiki
'''Species''' are the largest possible groups of organisms that are capable of producing viable offspring. Subspecies are beneath species in the taxonomic hierarchy, and are capable of interbreeding within the same species category but tend to not do so, choosing to reproduce with the same subspecies instead.
Generally, species on this wiki are fictional or partially fictionalized versions of real-world species. Their canonicity varies.
For simplicity's sake, a subspecies should not be given its own page unless they are notably distinct from their encompassing species or from other subspecies in the same species category.
19d81e52df84a728dc4529cdc84ebea38b7ec85b
602
601
2023-03-14T20:55:26Z
BEELETH
2
wikitext
text/x-wiki
'''Species''' are the largest possible groups of organisms that are capable of producing viable offspring. Subspecies are beneath species in the taxonomic hierarchy, and are capable of interbreeding within the same species category but tend to not do so, choosing to reproduce with the same subspecies instead.
Generally, species on this wiki are fictional or partially fictionalized versions of real-world species. Their canonicity varies.
A species may be listed as a category if they appear very frequently within the Vast Space or beyond. For simplicity's sake, a ''subspecies'' should not be given its own page unless they are notably distinct from their encompassing species or from other subspecies in the same species category.
508785597eddd4809736dc106a08e70e35a00c68
Humans
0
306
600
2023-03-14T20:51:28Z
BEELETH
2
created page
wikitext
text/x-wiki
placeholder text
[[Category:Species]]
[[Category:Stubs]]
2acbd63bdc36090405907d178edf3be22684a1da
Category:Humans
14
307
603
2023-03-14T20:56:03Z
BEELETH
2
Created page with "See the page for [[humans]]. [[Category:Species]]"
wikitext
text/x-wiki
See the page for [[humans]].
[[Category:Species]]
eef413fe26f2b1534a384d95d993ecf207e874a4
Category:Furries
14
308
604
2023-03-14T21:28:15Z
BEELETH
2
Created page with "'''"Furries"''' is used on this wiki as a catch-all term for [[characters]] with (at least) bipedal, anthropomorphic animal-based designs that are noticeably non-human, generally in their head area at the very minimum (if they have a head). A character can also be described as a furry if they have a distinctly, mostly (if not entirely) animal-like body. The rules are somewhat vague but it will generally be clear to the viewer if a character can or cannot be described as..."
wikitext
text/x-wiki
'''"Furries"''' is used on this wiki as a catch-all term for [[characters]] with (at least) bipedal, anthropomorphic animal-based designs that are noticeably non-human, generally in their head area at the very minimum (if they have a head). A character can also be described as a furry if they have a distinctly, mostly (if not entirely) animal-like body. The rules are somewhat vague but it will generally be clear to the viewer if a character can or cannot be described as a furry.
The term "furry" has also been used to describe several [[species]] and taxonomic groups, including but not limited to:
* [[beastmen]]
* [[civil animals]]
While furries are not technically established to be a species in the Vast Space, this exists as a category anyway simply because it's an easy category to place characters in. There are more specific sub-categories that work for more accurate classification.
[[Category:Species]]
dae0f4d963cd2a083569fbb37304073ee5892765
Category:Beastmen
14
309
605
2023-03-14T21:29:44Z
BEELETH
2
Created page with "placeholder text [[Category:Species]] [[Category:Furries]] [[Category:Uncharted Space]]"
wikitext
text/x-wiki
placeholder text
[[Category:Species]]
[[Category:Furries]]
[[Category:Uncharted Space]]
d4d31f4c5419be646f9200bf0386df6952498536
613
605
2023-04-03T15:49:42Z
BEELETH
2
wikitext
text/x-wiki
A list of all [[beastmen]] throughout [[Vast Space]].
[[Category:Species]]
[[Category:Furries]]
[[Category:Uncharted Space]]
c08e1b28dc1b694ae692f30e7578138fca59db74
Halberd (character)
0
166
606
596
2023-03-14T21:43:47Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<small>''Not to be confused with [[BEELETH]].''</small>{{In<br>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
*Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Gallery==
''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>''
===Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
===Reference images ===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
===Name origin ===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
ff4605b36e996450dc82a338b45f6e04070b00d4
607
606
2023-03-14T21:44:04Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<small>''Not to be confused with [[BEELETH]].''</small><br>{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''' or '''Halberd Freezeray''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
*Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Gallery==
''<small>[[Halberd (character)/Gallery|Click here to see Halberd's full gallery.]]</small>''
===Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
===Reference images ===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
===Name origin ===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
32c54030a4ddfeb48480aeaac19892b10faffe70
Module:Sidebar
828
204
631
406
2023-03-14T22:35:53Z
vast>Izno
0
move these items to config, discovered during work at meta
Scribunto
text/plain
require('strict')
local cfg = mw.loadData('Module:Sidebar/configuration')
local p = {}
local getArgs = require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
local function categorizeTemplatesWithInlineStyles(args)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 and title.namespace ~= 828 then return '' end
for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do
if title.text:match(pattern) then return '' end
end
for key, _ in pairs(args) do
if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then
return cfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
local function trimAndAddAutomaticNewline(s)
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
local function hasSubgroup(s)
if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then
return true
else
return false
end
end
local function has_navbar(navbar_mode, sidebar_name)
return navbar_mode ~= cfg.i18n.navbar_none and
navbar_mode ~= cfg.i18n.navbar_off and
(
sidebar_name or
mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~=
cfg.i18n.title_not_to_add_navbar
)
end
local function has_list_class(args, htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, value in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles(args)
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(args, htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles)
local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar(args.navbar, args.name) and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles}
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note]
return hlist_styles .. plainlist_styles
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
function p.sidebar(frame, args, collapsibleClass)
if not args then
args = getArgs(frame)
end
local hiding_templatestyles = table.concat(move_hiding_templatestyles(args))
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes
root = root:tag('table')
if not child then
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)
:addClass('nomobile')
:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)
:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)
:addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)
:addClass(args.bodyclass or args.class)
:css('width', args.width or nil)
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image
or cfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle
or cfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading' .. num .. 'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup
or cfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content' .. num .. 'class'])
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child and has_navbar(args.navbar, args.name) then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle
})
end
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
}
local templatestyles = ''
if args['templatestyles'] and args['templatestyles'] ~= '' then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] and args['child templatestyles'] ~= '' then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
add_list_styles(args), -- see [hlist_note] above about ordering
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
hiding_templatestyles,
tostring(root),
(child and cfg.i18n.category.child or ''),
categorizeTemplatesWithInlineStyles(args)
})
end
local function list_title(args, is_centered_list_titles, num)
local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title']
or cfg.i18n.default_list_title)
local title
if is_centered_list_titles then
-- collapsible can be finicky, so provide some CSS/HTML to support
title = mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title = mw.html.create()
:wikitext(title_text)
end
local title_container = mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:node(title)
:done()
return title_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
function p.collapsible(frame)
local args = getArgs(frame)
if not args.name and
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') ==
cfg.i18n.collapse_title_not_to_add_navbar then
args.navbar = cfg.i18n.navbar_none
end
local contentArgs = {}
local is_centered_list_titles = false
if args['centered list titles'] and args['centered list titles'] ~= '' then
is_centered_list_titles = true
end
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and
(args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((not expand) and 'mw-collapsed' or nil)
:addClass(args['list' .. num .. 'class'])
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:node(list_title(args, is_centered_list_titles, num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args, cfg.i18n.class.collapse)
end
return p
71fe765846593e025ca2f94371315e9dbb5bb4d2
632
631
2023-04-27T18:15:34Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
require('strict')
local cfg = mw.loadData('Module:Sidebar/configuration')
local p = {}
local getArgs = require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
local function categorizeTemplatesWithInlineStyles(args)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 and title.namespace ~= 828 then return '' end
for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do
if title.text:match(pattern) then return '' end
end
for key, _ in pairs(args) do
if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then
return cfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
local function trimAndAddAutomaticNewline(s)
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
local function hasSubgroup(s)
if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then
return true
else
return false
end
end
local function has_navbar(navbar_mode, sidebar_name)
return navbar_mode ~= cfg.i18n.navbar_none and
navbar_mode ~= cfg.i18n.navbar_off and
(
sidebar_name or
mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~=
cfg.i18n.title_not_to_add_navbar
)
end
local function has_list_class(args, htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, value in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles(args)
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(args, htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles)
local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar(args.navbar, args.name) and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles}
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note]
return hlist_styles .. plainlist_styles
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
function p.sidebar(frame, args, collapsibleClass)
if not args then
args = getArgs(frame)
end
local hiding_templatestyles = table.concat(move_hiding_templatestyles(args))
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes
root = root:tag('table')
if not child then
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)
:addClass('nomobile')
:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)
:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)
:addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)
:addClass(args.bodyclass or args.class)
:css('width', args.width or nil)
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image
or cfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle
or cfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading' .. num .. 'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup
or cfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content' .. num .. 'class'])
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child and has_navbar(args.navbar, args.name) then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle
})
end
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
}
local templatestyles = ''
if args['templatestyles'] and args['templatestyles'] ~= '' then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] and args['child templatestyles'] ~= '' then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
add_list_styles(args), -- see [hlist_note] above about ordering
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
hiding_templatestyles,
tostring(root),
(child and cfg.i18n.category.child or ''),
categorizeTemplatesWithInlineStyles(args)
})
end
local function list_title(args, is_centered_list_titles, num)
local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title']
or cfg.i18n.default_list_title)
local title
if is_centered_list_titles then
-- collapsible can be finicky, so provide some CSS/HTML to support
title = mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title = mw.html.create()
:wikitext(title_text)
end
local title_container = mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:node(title)
:done()
return title_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
function p.collapsible(frame)
local args = getArgs(frame)
if not args.name and
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') ==
cfg.i18n.collapse_title_not_to_add_navbar then
args.navbar = cfg.i18n.navbar_none
end
local contentArgs = {}
local is_centered_list_titles = false
if args['centered list titles'] and args['centered list titles'] ~= '' then
is_centered_list_titles = true
end
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and
(args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((not expand) and 'mw-collapsed' or nil)
:addClass(args['list' .. num .. 'class'])
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:node(list_title(args, is_centered_list_titles, num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args, cfg.i18n.class.collapse)
end
return p
71fe765846593e025ca2f94371315e9dbb5bb4d2
Anvil
0
310
608
2023-03-14T23:14:16Z
BEELETH
2
real
wikitext
text/x-wiki
{{Infobox|above=Anvil|caption=Design as of 2022|image=[[File:Placeholder.png|200px|Placeholder]]|header1=Creation and development}}
The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb.
Though Anvil uses both he/him and she/her (and occasionally they/them) as his pronouns, this article solely refers to him with he/him pronouns for consistency purposes.
== Personality ==
TBA
== Appearance ==
TBA
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and potential partially derived from his curse.
# '''Manipulating his soul as well as others' souls:''' TBA
# Wielding the Golden Hammer of Endless Ruin: TBA
# Using immense physical strength: TBA
# Using various forms of kineticism: TBA
#* Pyrokineticism
#* Alchemy
#
== Gallery ==
''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>''
===Recognized palettes===
TBA
===Reference images===
TBA
== Trivia ==
* Anvil was originally planned to wear a helmet at all times, but he is usually portrayed nowadays not wearing it.
=== Name origin ===
Anvil derives his name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer.
== Related pages ==
* [[Forge]], another beastman with a similar name
* [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight
[[Category:Beastmen]]
[[Category:Uncharted Space]]
[[Category:Stubs]]
2900a18cf32c156a70e1f9cb95fafb8ad0e9c4ff
Soul
0
311
609
2023-03-15T00:11:58Z
BEELETH
2
Redirected page to [[Souls]]
wikitext
text/x-wiki
#REDIRECT [[Souls]]
a4a5fa6dde1c6185e2d3b73e63453b5020da8ad1
BEELETH
0
149
610
548
2023-03-19T04:58:59Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}<small>''Not to be confused with [[Halberd (character)|Halberd]] or [[Beeleth]].''</small>
'''BEELETH''' (also called '''BEEL''', '''HALBERD''', and '''YUUBI''' among many other names) is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
[[Category:Humans]]
c667a13cf91e66127e4a30f5b7016be69c8ad597
Origin
0
295
611
584
2023-04-03T15:46:56Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created)
* January 2023 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin
* Rykha'uophi-konu}}
'''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity.
It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is.
== Personality ==
It is hard to discern what kind of personality Origin has, as he is too large and powerful to be accessibly interacted with by most individuals, let alone comprehended.
=== Voice ===
Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once.
== Appearance ==
By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent.
A star-like object known as the [[Origin point]] floats above his head between his antlers.
=== Biology and physical function ===
Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power.
The function of each of his organs is not entirely known, but they can all be observed from outside his body.
* The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him.
** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae.
* Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers.
His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have.
* His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull.
* There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them.
* They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards.
=== Other design notes ===
TBA
== Creation and development ==
Origin was initially created in late 2020 to be a sort of "higher power" over the other deities.
He was later redesigned and rewritten in early 2023.
== In-universe history ==
It can be assumed that Origin was either created at the same time as the Vast Space or he predates it
== Abilities ==
# TBA
== Gallery ==
=== Recognized palettes ===
<gallery widths="120" heights="60">
File:Origin2.png|Default palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title.
* He is also the only deity known to produce two types of ichor.
* Despite existing prior to Abstract in canon, he was created as a character ''after'' him.
=== Name origins ===
He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it.
His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract.
== Related pages ==
* [[Vast Space]]
[[Category:Characters]]
[[Category:Vast Space]]
[[Category:Deities]]
[[Category:Greater deities]]
[[Category:Stubs]]
76efd2ec323f454b667de89297754afa219a26c9
Furry
0
312
616
2023-04-05T23:58:43Z
BEELETH
2
Redirected page to [[Category:Furries]]
wikitext
text/x-wiki
#REDIRECT [[:Category:Furries]]
ce5d41c49a68a8eb3d8b02a88dc2dca5701f8eb7
4Kids Entertainment
0
313
617
2023-04-06T01:41:41Z
BEELETH
2
Created page with "'''4Kids Entertainment''' (also erroneously called '''4Kidz Entertainment''') is a multimedia entertainment company owned by [[John Blunts]] within the [[Uncharted Space]]. Its headquarters and main terrestrial broadcasting station are located in [[New Pokopoko]]. The company is famous (or infamous) for running the 4Kids TV channel, which only has a single show. == Trivia == * TBA === Name origins === 4Kids Entertainment's name and general atmosphere are derived from..."
wikitext
text/x-wiki
'''4Kids Entertainment''' (also erroneously called '''4Kidz Entertainment''') is a multimedia entertainment company owned by [[John Blunts]] within the [[Uncharted Space]]. Its headquarters and main terrestrial broadcasting station are located in [[New Pokopoko]]. The company is famous (or infamous) for running the 4Kids TV channel, which only has a single show.
== Trivia ==
* TBA
=== Name origins ===
4Kids Entertainment's name and general atmosphere are derived from the defunct real-world company of the same name.
== Related pages ==
* TBA
[[Category:Stubs]]
[[Category:Companies]]
[[Category:Uncharted Space]]
[[Category:New Pokopoko]]
a5ca46bf4be5d9e535972c5e8948bd835900f6a2
New Pokopoko
0
286
618
593
2023-04-06T01:51:52Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from 2023 (PLACEHOLDER, WILL ADD LATER)|image=[[File:Placeholder.png|200px|Placeholder]]}}
<small>''Not to be confused with [[Old Pokopoko]].''</small>
'''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It was built over [[Old Pokopoko]].
It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours.
== Creation and development ==
Initially, New Pokopoko was created in November 2022 as a one-off location during an AI Dungeon session set in the Uncharted Space. Many locations, characters, and events from the session were used as inspiration for [[Heavenly Beast|''Heavenly Beast'']].
optimistic dystopia
== In-universe history ==
The [[location]] now known as New Pokopoko is one of the first known places in the Uncharted Space to enter the Light Side. Alchemists that were banished from [[Citadelonia]] or simply wished to practice alchemy in secret travelled northward, splitting into two similar yet distinct groups that would later found Old Pokopoko and Gorgondel.
At least five years prior to ''Heavenly Beast'', Bunjeecorp gave the opportunity to a select few New Pokopokans to become cyborgs; two of these citizens were [[C.C.]] and [[Pollyanna]].
=== ''Heavenly Beast'' ===
Along with [[Remudon]] and [[Hypnosen]], the [[Circle of Royal Knights]] temporarily stops at New Pokopoko while hunting down the [[Heaven Dragon]]. They are personally greeted at the New Pokopoko Main Gate by [[Woolf]].
=== ''A Wicked Storm Comes'' ===
While New Pokopoko is not a major location during ''[[A Wicked Storm Comes]]'', certain events do occur at the same time as the story.
(ill add them later im very tired of writing an article about a fictional city on and off)
== Geography ==
Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation.
=== Major areas and districts ===
TBA
==== New Pokopoko Main Gate ====
Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort.
==== Rainbow roads ====
The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings.
==== Orbits ====
Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all.
An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport.
Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery.
=== Architecture ===
New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars.
The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia.
Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways.
==== Transportation ====
Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [[insta-jumps]]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than insta-jumps.
The insta-jumps used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them.
Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses.
===== Optimized Transport System (OPTRASYS) =====
<small>''See [[OPTRASYS]] for more information.''</small>
OPTRASYS is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system.
In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel.
=== Industries and economy ===
TBA
=== Climate ===
Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate.
Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side.
== Government ==
New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC.
=== Militia ===
TBA
== Culture ==
TBA
'''personal notes for later'''
* figure out what everyones deal w unicorns is
* how exactly does everyone feel about gorgondel anyway
* do people actually like bunjeecorp
* alchemy??? do people even know what it is here????
** kineticism as a whole actually
== Trivia ==
* New Pokopoko was conceptualized ''before'' Old Pokopoko, despite the name.
=== Name origin ===
The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound.
In canon, however, New Pokopoko derives its name from Old Pokopoko.
== Related pages ==
* [[Gobu Canyon]], a nearby region
* [[Gorgondel]], New Pokopoko's sister city
* [[Old Pokopoko]], the past version of New Pokopoko
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
35f0533a46ecef9f2a4c4468367362140f12f26d
Location
0
314
619
2023-04-06T01:53:35Z
BEELETH
2
Redirected page to [[Category:Locations]]
wikitext
text/x-wiki
#REDIRECT [[:Category:Locations]]
a3e7a566d3ed7ccca2698f5d1324fd77e2f53b61
Locations
0
315
620
2023-04-06T01:54:23Z
BEELETH
2
Redirected page to [[Category:Locations]]
wikitext
text/x-wiki
#REDIRECT [[:Category:Locations]]
a3e7a566d3ed7ccca2698f5d1324fd77e2f53b61
Deity
0
316
621
2023-04-06T01:57:33Z
BEELETH
2
Redirected page to [[Deities]]
wikitext
text/x-wiki
#REDIRECT [[Deities]]
997df5ba0fb25cfb36a887d7cd30c8fb73b14c81
Main Page
0
1
622
287
2023-04-11T15:25:22Z
BEELETH
2
why tf is this here
wikitext
text/x-wiki
#REDIRECT [[BEELETH Wiki]]__NOTOC__
0df2e339cc05d181bbedaae7c78cb088a818cbb3
Uncharted Space
0
288
623
570
2023-04-11T16:26:59Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}}
The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
TBA
=== ''Heavenly Beast'' ===
See the dedicated page for ''[[Heavenly Beast]].''
TBA
=== ''A Wicked Storm Comes'' ===
See the dedicated page for ''[[A Wicked Storm Comes]].''
TBA
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area).
# [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it.
=== Laws ===
# All laws of the Vast Space also apply to the Uncharted Space whenever possible.
# There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next.
# The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned.
== Trivia ==
* As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream.
* The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone.
** The first Zone was the [[Calamity Zone]], which is now of dubious canon.
== Related pages ==
* [[Calamity Zone]]
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
cb9fb6d29cb656fb0c364b4ce2498cfc58853534
641
623
2023-04-27T18:16:09Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}}
The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
TBA
=== ''Heavenly Beast'' ===
See the dedicated page for ''[[Heavenly Beast]].''
TBA; royal knights find and slay the heaven dragon, several locations are introduced and established
=== ''A Wicked Storm Comes'' ===
See the dedicated page for ''[[A Wicked Storm Comes]].''
TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk
=== ''Repentance Fugue'' ===
See the dedicated page for ''[[Repentance Fugue]]''.
TBA; bunjeecorp-related in some way
=== ''On a Scale From 1 to 10'' ===
See the dedicated page for [[On a Scale From 1 to 10|''On a Scale From 1 to 10'']].
TBA; bunjeecorp? or hydra? or both? not entirely sure
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area).
# [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it.
=== Laws ===
# All laws of the Vast Space also apply to the Uncharted Space whenever possible.
# There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next.
# The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned.
== Trivia ==
* As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream.
* The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone.
** The first Zone was the [[Calamity Zone]], which is now of dubious canon.
== Related pages ==
* [[Calamity Zone]]
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
3e9f0299af53ac453acd960715ae5126879725c0
647
641
2023-04-27T18:57:59Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}}
{{Hatnote|Read more [[here]]}}
The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
TBA
=== ''Heavenly Beast'' ===
{{Hatnote|See the dedicated page for [[Heavenly Beast]].}}
TBA; royal knights find and slay the heaven dragon, several locations are introduced and established
=== ''A Wicked Storm Comes'' ===
{{Hatnote|See the dedicated page for [[A Wicked Storm Comes]].}}
TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk
=== ''Repentance Fugue'' ===
{{Hatnote|See the dedicated page for [[Repentance Fugue]].}}
TBA; bunjeecorp-related in some way
=== ''On a Scale From 1 to 10'' ===
{{Hatnote|See the dedicated page for [[On a Scale From 1 to 10]].}}
TBA; bunjeecorp? or hydra? or both? not entirely sure
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area).
# [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it.
=== Laws ===
# All laws of the Vast Space also apply to the Uncharted Space whenever possible.
# There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next.
# The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned.
== Trivia ==
* As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream.
* The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone.
** The first Zone was the [[Calamity Zone]], which is now of dubious canon.
== Related pages ==
* [[Calamity Zone]]
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
b8da7529fa6b908d3e27d8753dac3b28230981ce
Auophian
0
317
624
2023-04-13T22:09:57Z
BEELETH
2
Redirected page to [[Auophilon]]
wikitext
text/x-wiki
#REDIRECT [[Auophilon]]
57819a0df1ed722343294eb4b4313a2204846b0b
Auophilon
0
318
625
2023-04-14T00:50:51Z
BEELETH
2
Created page with "{{Infobox|above=Auophilon|header1=Creation and development|label2=Development|data2=TBA}} '''Auophilon''' (alternatively called the '''Land of the Blooming Ones''') is a [[location]] in the [[Uncharted Space]] that was inhabited by the Auophi prior to the [[Auophian Massacre]]. to-do: improve phrasing and add more text lel == Creation and development == TBA == In-universe history == Auophilon was the first location in all of the Uncharted Space to ever enter the Li..."
wikitext
text/x-wiki
{{Infobox|above=Auophilon|header1=Creation and development|label2=Development|data2=TBA}}
'''Auophilon''' (alternatively called the '''Land of the Blooming Ones''') is a [[location]] in the [[Uncharted Space]] that was inhabited by the Auophi prior to the [[Auophian Massacre]].
to-do: improve phrasing and add more text lel
== Creation and development ==
TBA
== In-universe history ==
Auophilon was the first location in all of the Uncharted Space to ever enter the [[Light Side]], and it was also the first region to develop a thriving community. A variety of species that all spoke one [[language]] and took on a single identity chose to live there: the Auophi, also known as the Blooming Ones (as they greatly admired the growth of flowers and plants in physical and symbolic ways).
[[Kineticism]] was initially feared due to potential takeovers by strong individuals or groups, but it would come to be seen as a divine gift. Many people with psychic and/or spatial abilities would be given a position as an [[eye]], and would serve as a medium and diviner. Legends and rumors would develop of various deities making themselves known to the people, but nothing had been seen at the time.
At some point, some of the Auophi left their homeland in search of adventure and new territory, and later founded the location that would come to be known as [[Citadelonia]].
The Auophian Pantheon would make their first physical appearance after this. (TBA i need to come up with the rest of the pantheon)
[[Qhephion]] was the last of the Pantheon to be born, emerging from the Sacred Tree, killing it in the process with poison he naturally secretes. His birth was considered a curse, and he was scorned for killing such a major part of their community.
=== ''Heavenly Beast'' ===
TBA
=== ''A Wicked Storm Comes'' ===
TBA
=== ''Repentance Fugue'' ===
TBA
== Geography ==
Auophilon territory is generally considered to span from the beginning of the surrounding (TBN Forest) to the end of the (TBN Peninsula). The largest clearing was seen as the heart of the community where people would live, gather, or engage in commerce or ceremony.
=== Auophilon-kinu ===
The neighboring (TBN Forest) clears towards the end of the peninsula, and this area was traditionally called "Auophilon-kinu" (or "Lon-kinu" in some instances).
== Government ==
TBA
== Culture ==
The Auophi had a deep connection with a major pantheon that would come to be associated largely with them, as they are generally referred to as the Auophian pantheon.
=== TBA ===
One major aspect of Auophian culture was respect for nature.
== Trivia ==
* TBA
=== Name origin ===
TBA
== Related pages ==
* TBA
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
aa053ca1f68700a82d3715f2e4f084c76644d0c1
626
625
2023-04-27T17:10:38Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Auophilon|header1=Creation and development|label2=Development|data2=TBA}}
'''Auophilon''' (alternatively called the '''Land of the Blooming Ones''') is a [[location]] in the [[Uncharted Space]] that was inhabited by the Auophi prior to the [[Auophian Massacre]].
to-do: improve phrasing and add more text lel
== Creation and development ==
TBA
== In-universe history ==
Auophilon was the first location in all of the Uncharted Space to ever enter the [[Light Side]], and it was also the first region to develop a thriving community. A variety of species that all spoke one [[language]] and took on a single identity chose to live there: the Auophi, also known as the Blooming Ones (as they greatly admired the growth of flowers and plants in physical and symbolic ways).
[[Kineticism]] was initially feared due to potential takeovers by strong individuals or groups, but it would come to be seen as a divine gift. Many people with psychic and/or spatial abilities would be given a position as an [[eye]], and would serve as a medium and diviner. Legends and rumors would develop of various deities making themselves known to the people, but nothing had been seen at the time.
At some point, some of the Auophi left their homeland in search of adventure and new territory, and later founded the location that would come to be known as [[Citadelonia]].
The Auophian Pantheon would make their first physical appearance after this. (TBA i need to come up with the rest of the pantheon)
[[Qhephion]] was the last of the Pantheon to be born, emerging from the Sacred Tree, killing it in the process with poison he naturally secretes. His birth was considered a curse, and he was scorned for killing such a major part of their community.
=== ''Heavenly Beast'' ===
TBA
=== ''A Wicked Storm Comes'' ===
TBA
=== ''Repentance Fugue'' ===
TBA
== Geography ==
Auophilon territory is generally considered to span from the beginning of the surrounding (TBN Forest) to the end of the (TBN Peninsula). The largest clearing was seen as the heart of the community where people would live, gather, or engage in commerce or ceremony.
=== Auophilon-kinu ===
The neighboring (TBN Forest) clears towards the end of the peninsula, and this area was traditionally called "Auophilon-kinu" (or "Lon-kinu" in some instances).
== Government ==
TBA
== Culture ==
The Auophi had a deep connection with a major pantheon that would come to be associated largely with them, as they are generally referred to as the Auophian pantheon.
=== TBA ===
One major aspect of Auophian culture was respect for nature.
== Trivia ==
* Auophilon was originally refered to as Turophi.
=== Name origin ===
TBA
== Related pages ==
* TBA
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
f23b85cb894ef884a7cf278beab3a316466c5e97
Module:Authority control
828
321
635
2023-04-15T16:46:22Z
vast>MSGJ
0
add ^ and $ to patterns for matching
Scribunto
text/plain
require('strict')
local config = mw.loadData('Module:Authority control/config')
local p = {}
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = (string.sub(title.subpageText,1,9) == config.i18n.testcases)
local function needsAttention(sortkey)
return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'
end
local function addCat(cat,sortkey)
if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then
local redlinkcat = ''
if testcases == false and mw.title.new(cat, 14).exists == false then
redlinkcat = needsAttention('N')
end
if sortkey then
cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'
else
cat = '[[' .. config.i18n.category .. ':'..cat..']]'
end
cat = cat .. redlinkcat
return cat
else
return ''
end
end
local function getCatForId(id,faulty)
local cat = 'Articles with '
if faulty then cat = cat .. config.i18n.faulty .. ' ' end
cat = cat .. id .. ' ' .. config.i18n.identifiers
return addCat(cat)
end
local function getIdsFromWikidata(qid,property)
local function getquals(statement,qualid)
if statement.qualifiers and statement.qualifiers['P'..qualid] then
return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])
else
return false
end
end
local ids = {}
if qid then
for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do
if statement.mainsnak.datavalue then
local val = statement.mainsnak.datavalue.value
if val then
local namedas = getquals(statement,1810) or getquals(statement,742) or ''
table.insert(ids,{id=val,name=namedas})
end
end
end
end
return ids
end
local _makelink = function(conf,val,nextid,qid) --validate values and create a link
local function tooltip(text,label)
if label and label~='' then
return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}}
else
return text
end
end
local link
if nextid==1 then
if conf.prefix then
link = '*' .. conf.prefix .. '\n**'
else
link = '*'
end
else
link = '\n**'
end
local valid_value = false
if conf.customlink then -- use function to validate and generate link
local label = nextid>1 and nextid
local newlink= require(config.auxiliary)[conf.customlink](val.id,label)
if newlink then
link = link .. newlink
valid_value = true
end
else
if conf.pattern then -- use pattern to determine validity if defined
valid_value = string.match(val.id,'^'..conf.pattern..'$')
elseif conf.patterns then
for _,pattern in ipairs(conf.patterns) do
valid_value = val.id:match('^'..pattern..'$')
if valid_value then break end
end
elseif conf.valid then -- otherwise use function to determine validity
valid_value = require(config.auxiliary)[conf.valid](val.id)
else -- no validation possible
valid_value = val.id
end
if valid_value then
local newlink
local label = conf.label
if not label or nextid>1 then
label = tostring(nextid)
end
if conf.link then
valid_value = valid_value:gsub('%%', '%%%%')
newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']'
else
newlink = valid_value
end
link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>'
end
end
if valid_value then
link = link .. getCatForId(conf.category or conf[1])
else
--local preview = require("Module:If preview")
local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or ''
link = link .. '[[File:345-409 Ambox warning centered.svg|20px|frameless|link=' .. wdlink .. '|' .. config.i18n.The .. ' ' .. conf[1] .. ' ' .. config.i18n.identifier .. ' ' .. val.id .. ' ' .. config.i18n.isnotvalid .. '.]]'
if conf.errorcat then
link = link .. addCat(conf.errorcat)
else
link = link .. getCatForId(conf.category or conf[1],true)
end
link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'})
end
return link
end
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControl(frame)
local function resolveQID(qid)
if qid then
qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '')
if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then
local sitelink = mw.wikibase.getSitelink(qid)
if sitelink then
return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id
end
return mw.wikibase.getEntity(qid).id
end
end
end
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = ''
local rct = false -- boolean to track if there are any links to be returned
local qid,topic
if namespace == 0 then
qid = mw.wikibase.getEntityIdForCurrentPage()
end
if qid then -- article is connected to Wikidata item
if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter
auxCats = auxCats .. needsAttention('D')
end
else -- page is not connected to any Wikidata item
qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected
if qid then -- qid parameter is valid, set topic to display
topic = mw.wikibase.getLabel(qid)
if topic and (mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic)) then -- suppress topic display if subpagename equals topic up to case change
topic = nil
end
elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat
auxCats = auxCats .. needsAttention('Q')
end
end
if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article
topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]'
end
local qids = {} -- setup any additional QIDs
if parentArgs.additional and parentArgs.additional ~= '' then
for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do
v = resolveQID(v)
if v then
if v == qid then -- duplicate of qid parameter
auxCats = auxCats .. needsAttention('R')
end
table.insert(qids,v)
else -- invalid QID specified
auxCats = auxCats .. needsAttention('A')
end
end
end
local sections = {}
local localparams = false
local numsections = 0
for _,_ in ipairs(config.sections) do numsections = numsections + 1 end
for _ = 1,#qids+numsections do table.insert(sections,{}) end
local qslink = '' -- setup link to add using QuickStatements
-- check which identifiers to show/suppress in template
local show = {} -- setup list
local showall = true
local function stripP(pid)
if pid:match("^[Pp]%d+$") then
pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number
end
if pid:match("^%d+$") then
return tonumber(pid)
end
end
local function addshowlist(list)
if list and list ~= '' then
for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do
local vprop = stripP(v)
if vprop then -- e.g. show=P214 to show one particular property
show[vprop] = true
else -- e.g. show=arts to use whitelist
if config.whitelists[v] then
for _,w in ipairs(config.whitelists[v].properties) do
show[w] = true
end
end
end
end
showall = false
end
end
addshowlist(frame.args.show) -- check show= parameter on wrapper template
addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template
if parentArgs.suppress then
local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma
for _,v in ipairs(suppresslist) do
v = stripP(string.upper(v))
if v then
show[v] = false
auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]'
else
auxCats = auxCats .. needsAttention('P')
end
end
end
local function makeSections(qid,addit)
local tval = {}
local function parameter_is_used(property)
local used = false
if property then
if tval[property] then
if tval[property][1] then
used = true
end
elseif tval[property] == false then -- property has been manually suppressed
used = true
end
end
return used
end
for _, params in ipairs(conf) do
tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key
local showb = true
if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then
showb = showall -- if not specified then depends on showall
elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed
showb = false
end
if not showb then
tval[params.property] = false -- indicates the identifier is suppressed
elseif not addit then
local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]
if val and val~='' then -- add local parameter to list if not already in
localparams = true
local bnew = true
for _, w in pairs(tval[params.property]) do
if val == w.id then
bnew = false
end
end
if bnew then -- add new value to table
if qid then
qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328'
end
table.insert(tval[params.property],{id=val,name=''})
end
end
end
local suppress = false
if params.suppressedbyproperty then
for _,sc in ipairs(params.suppressedbyproperty) do
if parameter_is_used(sc) then
suppress = true
end
end
end
if tval[params.property] ~= false and not suppress then
local tlinks = {} -- setup table for links
local nextIdVal = 1
local row = ''
for _,val in ipairs(tval[params.property]) do
local link = _makelink(params,val,nextIdVal,qid)
row = row .. link
table.insert(tlinks,link)
nextIdVal = nextIdVal + 1
end
if nextIdVal>=2 then
row = row .. '\n'
table.insert(sections[addit or params.section],row)
rct = true
end
end
end
end
local function pencil(qid)
if not qid then
return ''
end
local args = { pid = 'identifiers' } -- #target the list of identifiers
args.qid = qid
return require('Module:EditAtWikidata')._showMessage(args)
end
makeSections(qid,false)
for c = 1,#qids do
makeSections(qids[c],numsections+c)
end
--configure Navbox
local outString = ''
if rct or localparams then -- there is at least one link to display
local Navbox = require('Module:Navbox')
local sect,lastsect = 0,0
local navboxArgs = {
name = 'Authority control',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or config.i18n.autocollapse,
navbar = 'off'
}
for c=1,numsections+#qids do
if #sections[c] ~= 0 then -- section is non-empty
sect = sect + 1
lastsect = c
local sectname
if c <= numsections then -- regular section
sectname = config.sections[c].name
else -- section from additional qid
sectname = mw.wikibase.getLabel(qids[c-numsections]) .. pencil(qids[c-numsections])
end
navboxArgs['group' .. c] = sectname
navboxArgs['list' .. c] = table.concat(sections[c])
end
end
if localparams then
lastsect = lastsect + 1
sect = sect + 1
navboxArgs['group' .. lastsect] = config.i18n.warning
local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}}
if qslink ~= '' then
warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show"> [[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>'
elseif not qid then
if namespace == 0 then
warning = warning .. ' ' .. config.i18n.connecttowd
elseif namespace==14 or namespace==2 or namespace==118 then
warning = warning .. ' ' .. config.i18n.qidcode
end
end
navboxArgs['list' .. lastsect] = warning
end
if topic then -- display in expanded form with topic
navboxArgs.title = config.i18n.aclink .. ' – ' .. topic .. pencil(qid)
elseif sect == 1 then -- special display when only one section
if lastsect <= numsections then
if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present
navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)
else -- other regular section
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)
end
else -- section from additional qid
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]
end
else -- add title to navbox
navboxArgs.title = config.i18n.aclink .. pencil(qid)
end
outString = Navbox._navbox(navboxArgs)
end
if parentArgs.state then
if (parentArgs.state ~= config.i18n.collapsed) and (parentArgs.state ~= config.i18n.expanded) and (parentArgs.state ~= config.i18n.autocollapse) then --invalid state parameter
auxCats = auxCats .. needsAttention('S')
end
end
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking
end
--out
outString = outString..auxCats
if namespace ~= 0 then
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':Articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':All articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
end
local check = require('Module:Check for unknown parameters')._check
local sortkey
if namespace == 0 then
sortkey = '*' .. title.text
else
sortkey = title.fullText
end
local tracking = check({
['unknown'] = '[[' .. config.i18n.category .. ':Pages using authority control with parameters|' .. sortkey .. ']]',
['preview'] = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.',
'show', 'country', 'suppress', 'additional', 'qid', 'state'
}, parentArgs)
if namespace == 0 -- mainspace
or namespace == 14 -- category
or namespace == 2 -- user
or namespace == 118 then -- draft
outString = outString .. tracking
end
return outString
end
p.makelink = function(conf,val,nextid,qid)
return _makelink(conf,val,nextid,qid)
end
return p
fd33917c2479eef8aee64856dd70475ba02ec26a
636
635
2023-04-27T18:15:37Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
require('strict')
local config = mw.loadData('Module:Authority control/config')
local p = {}
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = (string.sub(title.subpageText,1,9) == config.i18n.testcases)
local function needsAttention(sortkey)
return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'
end
local function addCat(cat,sortkey)
if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then
local redlinkcat = ''
if testcases == false and mw.title.new(cat, 14).exists == false then
redlinkcat = needsAttention('N')
end
if sortkey then
cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'
else
cat = '[[' .. config.i18n.category .. ':'..cat..']]'
end
cat = cat .. redlinkcat
return cat
else
return ''
end
end
local function getCatForId(id,faulty)
local cat = 'Articles with '
if faulty then cat = cat .. config.i18n.faulty .. ' ' end
cat = cat .. id .. ' ' .. config.i18n.identifiers
return addCat(cat)
end
local function getIdsFromWikidata(qid,property)
local function getquals(statement,qualid)
if statement.qualifiers and statement.qualifiers['P'..qualid] then
return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])
else
return false
end
end
local ids = {}
if qid then
for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do
if statement.mainsnak.datavalue then
local val = statement.mainsnak.datavalue.value
if val then
local namedas = getquals(statement,1810) or getquals(statement,742) or ''
table.insert(ids,{id=val,name=namedas})
end
end
end
end
return ids
end
local _makelink = function(conf,val,nextid,qid) --validate values and create a link
local function tooltip(text,label)
if label and label~='' then
return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}}
else
return text
end
end
local link
if nextid==1 then
if conf.prefix then
link = '*' .. conf.prefix .. '\n**'
else
link = '*'
end
else
link = '\n**'
end
local valid_value = false
if conf.customlink then -- use function to validate and generate link
local label = nextid>1 and nextid
local newlink= require(config.auxiliary)[conf.customlink](val.id,label)
if newlink then
link = link .. newlink
valid_value = true
end
else
if conf.pattern then -- use pattern to determine validity if defined
valid_value = string.match(val.id,'^'..conf.pattern..'$')
elseif conf.patterns then
for _,pattern in ipairs(conf.patterns) do
valid_value = val.id:match('^'..pattern..'$')
if valid_value then break end
end
elseif conf.valid then -- otherwise use function to determine validity
valid_value = require(config.auxiliary)[conf.valid](val.id)
else -- no validation possible
valid_value = val.id
end
if valid_value then
local newlink
local label = conf.label
if not label or nextid>1 then
label = tostring(nextid)
end
if conf.link then
valid_value = valid_value:gsub('%%', '%%%%')
newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']'
else
newlink = valid_value
end
link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>'
end
end
if valid_value then
link = link .. getCatForId(conf.category or conf[1])
else
--local preview = require("Module:If preview")
local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or ''
link = link .. '[[File:345-409 Ambox warning centered.svg|20px|frameless|link=' .. wdlink .. '|' .. config.i18n.The .. ' ' .. conf[1] .. ' ' .. config.i18n.identifier .. ' ' .. val.id .. ' ' .. config.i18n.isnotvalid .. '.]]'
if conf.errorcat then
link = link .. addCat(conf.errorcat)
else
link = link .. getCatForId(conf.category or conf[1],true)
end
link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'})
end
return link
end
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControl(frame)
local function resolveQID(qid)
if qid then
qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '')
if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then
local sitelink = mw.wikibase.getSitelink(qid)
if sitelink then
return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id
end
return mw.wikibase.getEntity(qid).id
end
end
end
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = ''
local rct = false -- boolean to track if there are any links to be returned
local qid,topic
if namespace == 0 then
qid = mw.wikibase.getEntityIdForCurrentPage()
end
if qid then -- article is connected to Wikidata item
if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter
auxCats = auxCats .. needsAttention('D')
end
else -- page is not connected to any Wikidata item
qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected
if qid then -- qid parameter is valid, set topic to display
topic = mw.wikibase.getLabel(qid)
if topic and (mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic)) then -- suppress topic display if subpagename equals topic up to case change
topic = nil
end
elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat
auxCats = auxCats .. needsAttention('Q')
end
end
if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article
topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]'
end
local qids = {} -- setup any additional QIDs
if parentArgs.additional and parentArgs.additional ~= '' then
for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do
v = resolveQID(v)
if v then
if v == qid then -- duplicate of qid parameter
auxCats = auxCats .. needsAttention('R')
end
table.insert(qids,v)
else -- invalid QID specified
auxCats = auxCats .. needsAttention('A')
end
end
end
local sections = {}
local localparams = false
local numsections = 0
for _,_ in ipairs(config.sections) do numsections = numsections + 1 end
for _ = 1,#qids+numsections do table.insert(sections,{}) end
local qslink = '' -- setup link to add using QuickStatements
-- check which identifiers to show/suppress in template
local show = {} -- setup list
local showall = true
local function stripP(pid)
if pid:match("^[Pp]%d+$") then
pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number
end
if pid:match("^%d+$") then
return tonumber(pid)
end
end
local function addshowlist(list)
if list and list ~= '' then
for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do
local vprop = stripP(v)
if vprop then -- e.g. show=P214 to show one particular property
show[vprop] = true
else -- e.g. show=arts to use whitelist
if config.whitelists[v] then
for _,w in ipairs(config.whitelists[v].properties) do
show[w] = true
end
end
end
end
showall = false
end
end
addshowlist(frame.args.show) -- check show= parameter on wrapper template
addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template
if parentArgs.suppress then
local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma
for _,v in ipairs(suppresslist) do
v = stripP(string.upper(v))
if v then
show[v] = false
auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]'
else
auxCats = auxCats .. needsAttention('P')
end
end
end
local function makeSections(qid,addit)
local tval = {}
local function parameter_is_used(property)
local used = false
if property then
if tval[property] then
if tval[property][1] then
used = true
end
elseif tval[property] == false then -- property has been manually suppressed
used = true
end
end
return used
end
for _, params in ipairs(conf) do
tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key
local showb = true
if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then
showb = showall -- if not specified then depends on showall
elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed
showb = false
end
if not showb then
tval[params.property] = false -- indicates the identifier is suppressed
elseif not addit then
local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]
if val and val~='' then -- add local parameter to list if not already in
localparams = true
local bnew = true
for _, w in pairs(tval[params.property]) do
if val == w.id then
bnew = false
end
end
if bnew then -- add new value to table
if qid then
qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328'
end
table.insert(tval[params.property],{id=val,name=''})
end
end
end
local suppress = false
if params.suppressedbyproperty then
for _,sc in ipairs(params.suppressedbyproperty) do
if parameter_is_used(sc) then
suppress = true
end
end
end
if tval[params.property] ~= false and not suppress then
local tlinks = {} -- setup table for links
local nextIdVal = 1
local row = ''
for _,val in ipairs(tval[params.property]) do
local link = _makelink(params,val,nextIdVal,qid)
row = row .. link
table.insert(tlinks,link)
nextIdVal = nextIdVal + 1
end
if nextIdVal>=2 then
row = row .. '\n'
table.insert(sections[addit or params.section],row)
rct = true
end
end
end
end
local function pencil(qid)
if not qid then
return ''
end
local args = { pid = 'identifiers' } -- #target the list of identifiers
args.qid = qid
return require('Module:EditAtWikidata')._showMessage(args)
end
makeSections(qid,false)
for c = 1,#qids do
makeSections(qids[c],numsections+c)
end
--configure Navbox
local outString = ''
if rct or localparams then -- there is at least one link to display
local Navbox = require('Module:Navbox')
local sect,lastsect = 0,0
local navboxArgs = {
name = 'Authority control',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or config.i18n.autocollapse,
navbar = 'off'
}
for c=1,numsections+#qids do
if #sections[c] ~= 0 then -- section is non-empty
sect = sect + 1
lastsect = c
local sectname
if c <= numsections then -- regular section
sectname = config.sections[c].name
else -- section from additional qid
sectname = mw.wikibase.getLabel(qids[c-numsections]) .. pencil(qids[c-numsections])
end
navboxArgs['group' .. c] = sectname
navboxArgs['list' .. c] = table.concat(sections[c])
end
end
if localparams then
lastsect = lastsect + 1
sect = sect + 1
navboxArgs['group' .. lastsect] = config.i18n.warning
local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}}
if qslink ~= '' then
warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show"> [[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>'
elseif not qid then
if namespace == 0 then
warning = warning .. ' ' .. config.i18n.connecttowd
elseif namespace==14 or namespace==2 or namespace==118 then
warning = warning .. ' ' .. config.i18n.qidcode
end
end
navboxArgs['list' .. lastsect] = warning
end
if topic then -- display in expanded form with topic
navboxArgs.title = config.i18n.aclink .. ' – ' .. topic .. pencil(qid)
elseif sect == 1 then -- special display when only one section
if lastsect <= numsections then
if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present
navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)
else -- other regular section
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)
end
else -- section from additional qid
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]
end
else -- add title to navbox
navboxArgs.title = config.i18n.aclink .. pencil(qid)
end
outString = Navbox._navbox(navboxArgs)
end
if parentArgs.state then
if (parentArgs.state ~= config.i18n.collapsed) and (parentArgs.state ~= config.i18n.expanded) and (parentArgs.state ~= config.i18n.autocollapse) then --invalid state parameter
auxCats = auxCats .. needsAttention('S')
end
end
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking
end
--out
outString = outString..auxCats
if namespace ~= 0 then
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':Articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':All articles)([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
end
local check = require('Module:Check for unknown parameters')._check
local sortkey
if namespace == 0 then
sortkey = '*' .. title.text
else
sortkey = title.fullText
end
local tracking = check({
['unknown'] = '[[' .. config.i18n.category .. ':Pages using authority control with parameters|' .. sortkey .. ']]',
['preview'] = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.',
'show', 'country', 'suppress', 'additional', 'qid', 'state'
}, parentArgs)
if namespace == 0 -- mainspace
or namespace == 14 -- category
or namespace == 2 -- user
or namespace == 118 then -- draft
outString = outString .. tracking
end
return outString
end
p.makelink = function(conf,val,nextid,qid)
return _makelink(conf,val,nextid,qid)
end
return p
fd33917c2479eef8aee64856dd70475ba02ec26a
Module:Navbox
828
76
633
151
2023-04-17T13:46:15Z
vast>Lemondoge
0
Fixing ternary expression short-circuit ("foo and nil or bar" is always equal to "bar", but "not foo and bar or nil" produces the intended effect)
Scribunto
text/plain
local p = {}
local navbar = require('Module:Navbar')._navbar
local cfg = mw.loadData('Module:Navbox/configuration')
local getArgs -- lazily initialized
local args
local format = string.format
local function striped(wikitext, border)
-- Return wikitext with markers replaced for odd/even striping.
-- Child (subgroup) navboxes are flagged with a category that is removed
-- by parent navboxes. The result is that the category shows all pages
-- where a child navbox is not contained in a parent navbox.
local orphanCat = cfg.category.orphan
if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then
-- No change; striping occurs in outermost navbox.
return wikitext .. orphanCat
end
local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part
if args[cfg.arg.evenodd] then
if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then
first, second = second, first
else
first = args[cfg.arg.evenodd]
second = first
end
end
local changer
if first == second then
changer = first
else
local index = 0
changer = function (code)
if code == '0' then
-- Current occurrence is for a group before a nested table.
-- Set it to first as a valid although pointless class.
-- The next occurrence will be the first row after a title
-- in a subgroup and will also be first.
index = 0
return first
end
index = index + 1
return index % 2 == 1 and first or second
end
end
local regex = orphanCat:gsub('([%[%]])', '%%%1')
return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count
end
local function processItem(item, nowrapitems)
if item:sub(1, 2) == '{|' then
-- Applying nowrap to lines in a table does not make sense.
-- Add newlines to compensate for trim of x in |parm=x in a template.
return '\n' .. item ..'\n'
end
if nowrapitems == cfg.keyword.nowrapitems_yes then
local lines = {}
for line in (item .. '\n'):gmatch('([^\n]*)\n') do
local prefix, content = line:match('^([*:;#]+)%s*(.*)')
if prefix and not content:match(cfg.pattern.nowrap) then
line = format(cfg.nowrap_item, prefix, content)
end
table.insert(lines, line)
end
item = table.concat(lines, '\n')
end
if item:match('^[*:;#]') then
return '\n' .. item ..'\n'
end
return item
end
local function has_navbar()
return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off
and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain
and (
args[cfg.arg.name]
or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '')
~= cfg.pattern.navbox
)
end
local function renderNavBar(titleCell)
if has_navbar() then
titleCell:wikitext(navbar{
[cfg.navbar.name] = args[cfg.arg.name],
[cfg.navbar.mini] = 1,
[cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' ..
(args[cfg.arg.titlestyle] or '') ..
';background:none transparent;border:none;box-shadow:none;padding:0;'
})
end
end
local function renderTitleRow(tbl)
if not args[cfg.arg.title] then return end
local titleRow = tbl:tag('tr')
local titleCell = titleRow:tag('th'):attr('scope', 'col')
local titleColspan = 2
if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end
if args[cfg.arg.image] then titleColspan = titleColspan + 1 end
titleCell
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.titlestyle])
:addClass(cfg.class.navbox_title)
:attr('colspan', titleColspan)
renderNavBar(titleCell)
titleCell
:tag('div')
-- id for aria-labelledby attribute
:attr('id', mw.uri.anchorEncode(args[cfg.arg.title]))
:addClass(args[cfg.arg.titleclass])
:css('font-size', '114%')
:css('margin', '0 4em')
:wikitext(processItem(args[cfg.arg.title]))
end
local function getAboveBelowColspan()
local ret = 2
if args[cfg.arg.imageleft] then ret = ret + 1 end
if args[cfg.arg.image] then ret = ret + 1 end
return ret
end
local function renderAboveRow(tbl)
if not args[cfg.arg.above] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.aboveclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.abovestyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
-- id for aria-labelledby attribute, if no title
:attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil)
:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))
end
local function renderBelowRow(tbl)
if not args[cfg.arg.below] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.belowclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.belowstyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))
end
local function renderListRow(tbl, index, listnum, listnums_size)
local row = tbl:tag('tr')
if index == 1 and args[cfg.arg.imageleft] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 2px 0 0')
:cssText(args[cfg.arg.imageleftstyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.imageleft]))
end
local group_and_num = format(cfg.arg.group_and_num, listnum)
local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum)
if args[group_and_num] then
local groupCell = row:tag('th')
-- id for aria-labelledby attribute, if lone group with no title or above
if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then
groupCell
:attr('id', mw.uri.anchorEncode(args[cfg.arg.group1]))
end
groupCell
:attr('scope', 'row')
:addClass(cfg.class.navbox_group)
:addClass(args[cfg.arg.groupclass])
:cssText(args[cfg.arg.basestyle])
-- If groupwidth not specified, minimize width
:css('width', args[cfg.arg.groupwidth] or '1%')
groupCell
:cssText(args[cfg.arg.groupstyle])
:cssText(args[groupstyle_and_num])
:wikitext(args[group_and_num])
end
local listCell = row:tag('td')
if args[group_and_num] then
listCell
:addClass(cfg.class.navbox_list_with_group)
else
listCell:attr('colspan', 2)
end
if not args[cfg.arg.groupwidth] then
listCell:css('width', '100%')
end
local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing
if index % 2 == 1 then
rowstyle = args[cfg.arg.oddstyle]
else
rowstyle = args[cfg.arg.evenstyle]
end
local list_and_num = format(cfg.arg.list_and_num, listnum)
local listText = args[list_and_num]
local oddEven = cfg.marker.oddeven
if listText:sub(1, 12) == '</div><table' then
-- Assume list text is for a subgroup navbox so no automatic striping for this row.
oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part
end
local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum)
local listclass_and_num = format(cfg.arg.listclass_and_num, listnum)
listCell
:css('padding', '0')
:cssText(args[cfg.arg.liststyle])
:cssText(rowstyle)
:cssText(args[liststyle_and_num])
:addClass(cfg.class.navbox_list)
:addClass(cfg.class.navbox_part .. oddEven)
:addClass(args[cfg.arg.listclass])
:addClass(args[listclass_and_num])
:tag('div')
:css('padding',
(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em'
)
:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))
if index == 1 and args[cfg.arg.image] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 0 0 2px')
:cssText(args[cfg.arg.imagestyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.image]))
end
end
local function has_list_class(htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, _ in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles()
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles)
local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar() and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because most navboxes will emit only
-- one of these classes [hlist_note]
return hlist_styles .. plainlist_styles
end
local function needsHorizontalLists(border)
if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then
return false
end
return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)
end
local function hasBackgroundColors()
for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,
cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('background', 1, true) then
return true
end
end
return false
end
local function hasBorders()
for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,
cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('border', 1, true) then
return true
end
end
return false
end
local function isIllegible()
local styleratio = require('Module:Color contrast')._styleratio
for key, style in pairs(args) do
if tostring(key):match(cfg.pattern.style) then
if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then
return true
end
end
end
return false
end
local function getTrackingCategories(border)
local cats = {}
if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end
if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end
if isIllegible() then table.insert(cats, cfg.category.illegible) end
if hasBorders() then table.insert(cats, cfg.category.borders) end
return cats
end
local function renderTrackingCategories(builder, border)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 then return end -- not in template space
local subpage = title.subpageText
if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox
or subpage == cfg.keyword.subpage_testcases then return end
for _, cat in ipairs(getTrackingCategories(border)) do
builder:wikitext('[[Category:' .. cat .. ']]')
end
end
local function renderMainTable(border, listnums)
local tbl = mw.html.create('table')
:addClass(cfg.class.nowraplinks)
:addClass(args[cfg.arg.bodyclass])
local state = args[cfg.arg.state]
if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then
if state == cfg.keyword.state_collapsed then
state = cfg.class.collapsed
end
tbl
:addClass(cfg.class.collapsible)
:addClass(state or cfg.class.autocollapse)
end
tbl:css('border-spacing', 0)
if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then
tbl
:addClass(cfg.class.navbox_subgroup)
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
else -- regular navbox - bodystyle and style will be applied to the wrapper table
tbl
:addClass(cfg.class.navbox_inner)
:css('background', 'transparent')
:css('color', 'inherit')
end
tbl:cssText(args[cfg.arg.innerstyle])
renderTitleRow(tbl)
renderAboveRow(tbl)
local listnums_size = #listnums
for i, listnum in ipairs(listnums) do
renderListRow(tbl, i, listnum, listnums_size)
end
renderBelowRow(tbl)
return tbl
end
local function add_navbox_styles(hiding_templatestyles)
local frame = mw.getCurrentFrame()
-- This is a lambda so that it doesn't need the frame as a parameter
local function add_user_styles(templatestyles)
if templatestyles and templatestyles ~= '' then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
end
return ''
end
-- get templatestyles. load base from config so that Lua only needs to do
-- the work once of parser tag expansion
local base_templatestyles = cfg.templatestyles
local templatestyles = add_user_styles(args[cfg.arg.templatestyles])
local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])
-- The 'navbox-styles' div exists to wrap the styles to work around T200206
-- more elegantly. Instead of combinatorial rules, this ends up being linear
-- number of CSS rules.
return mw.html.create('div')
:addClass(cfg.class.navbox_styles)
:wikitext(
add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles'
base_templatestyles ..
templatestyles ..
child_templatestyles ..
table.concat(hiding_templatestyles)
)
:done()
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
function p._navbox(navboxArgs)
args = navboxArgs
local hiding_templatestyles = move_hiding_templatestyles(args)
local listnums = {}
for k, _ in pairs(args) do
if type(k) == 'string' then
local listnum = k:match(cfg.pattern.listnum)
if listnum then table.insert(listnums, tonumber(listnum)) end
end
end
table.sort(listnums)
local border = mw.text.trim(args[cfg.arg.border] or args[1] or '')
if border == cfg.keyword.border_child then
border = cfg.keyword.border_subgroup
end
-- render the main body of the navbox
local tbl = renderMainTable(border, listnums)
local res = mw.html.create()
-- render the appropriate wrapper for the navbox, based on the border param
if border == cfg.keyword.border_none then
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]
and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(
args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]
)
)
else
nav:attr('aria-label', cfg.aria_label)
end
elseif border == cfg.keyword.border_subgroup then
-- We assume that this navbox is being rendered in a list cell of a
-- parent navbox, and is therefore inside a div with padding:0em 0.25em.
-- We start with a </div> to avoid the padding being applied, and at the
-- end add a <div> to balance out the parent's </div>
res
:wikitext('</div>')
:node(tbl)
:wikitext('<div>')
else
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:addClass(cfg.class.navbox)
:addClass(args[cfg.arg.navboxclass])
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
:css('padding', '3px')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above]
or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1])
)
else
nav:attr('aria-label', cfg.aria_label)
end
end
if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then
renderTrackingCategories(res, border)
end
return striped(tostring(res), border)
end
function p.navbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
args = getArgs(frame, {wrappers = {cfg.pattern.navbox}})
-- Read the arguments in the order they'll be output in, to make references
-- number in the right order.
local _
_ = args[cfg.arg.title]
_ = args[cfg.arg.above]
-- Limit this to 20 as covering 'most' cases (that's a SWAG) and because
-- iterator approach won't work here
for i = 1, 20 do
_ = args[format(cfg.arg.group_and_num, i)]
_ = args[format(cfg.arg.list_and_num, i)]
end
_ = args[cfg.arg.below]
return p._navbox(args)
end
return p
5abf477a4f472e7b9f2543257d84327000684555
634
633
2023-04-27T18:15:36Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
local navbar = require('Module:Navbar')._navbar
local cfg = mw.loadData('Module:Navbox/configuration')
local getArgs -- lazily initialized
local args
local format = string.format
local function striped(wikitext, border)
-- Return wikitext with markers replaced for odd/even striping.
-- Child (subgroup) navboxes are flagged with a category that is removed
-- by parent navboxes. The result is that the category shows all pages
-- where a child navbox is not contained in a parent navbox.
local orphanCat = cfg.category.orphan
if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then
-- No change; striping occurs in outermost navbox.
return wikitext .. orphanCat
end
local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part
if args[cfg.arg.evenodd] then
if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then
first, second = second, first
else
first = args[cfg.arg.evenodd]
second = first
end
end
local changer
if first == second then
changer = first
else
local index = 0
changer = function (code)
if code == '0' then
-- Current occurrence is for a group before a nested table.
-- Set it to first as a valid although pointless class.
-- The next occurrence will be the first row after a title
-- in a subgroup and will also be first.
index = 0
return first
end
index = index + 1
return index % 2 == 1 and first or second
end
end
local regex = orphanCat:gsub('([%[%]])', '%%%1')
return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count
end
local function processItem(item, nowrapitems)
if item:sub(1, 2) == '{|' then
-- Applying nowrap to lines in a table does not make sense.
-- Add newlines to compensate for trim of x in |parm=x in a template.
return '\n' .. item ..'\n'
end
if nowrapitems == cfg.keyword.nowrapitems_yes then
local lines = {}
for line in (item .. '\n'):gmatch('([^\n]*)\n') do
local prefix, content = line:match('^([*:;#]+)%s*(.*)')
if prefix and not content:match(cfg.pattern.nowrap) then
line = format(cfg.nowrap_item, prefix, content)
end
table.insert(lines, line)
end
item = table.concat(lines, '\n')
end
if item:match('^[*:;#]') then
return '\n' .. item ..'\n'
end
return item
end
local function has_navbar()
return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off
and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain
and (
args[cfg.arg.name]
or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '')
~= cfg.pattern.navbox
)
end
local function renderNavBar(titleCell)
if has_navbar() then
titleCell:wikitext(navbar{
[cfg.navbar.name] = args[cfg.arg.name],
[cfg.navbar.mini] = 1,
[cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' ..
(args[cfg.arg.titlestyle] or '') ..
';background:none transparent;border:none;box-shadow:none;padding:0;'
})
end
end
local function renderTitleRow(tbl)
if not args[cfg.arg.title] then return end
local titleRow = tbl:tag('tr')
local titleCell = titleRow:tag('th'):attr('scope', 'col')
local titleColspan = 2
if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end
if args[cfg.arg.image] then titleColspan = titleColspan + 1 end
titleCell
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.titlestyle])
:addClass(cfg.class.navbox_title)
:attr('colspan', titleColspan)
renderNavBar(titleCell)
titleCell
:tag('div')
-- id for aria-labelledby attribute
:attr('id', mw.uri.anchorEncode(args[cfg.arg.title]))
:addClass(args[cfg.arg.titleclass])
:css('font-size', '114%')
:css('margin', '0 4em')
:wikitext(processItem(args[cfg.arg.title]))
end
local function getAboveBelowColspan()
local ret = 2
if args[cfg.arg.imageleft] then ret = ret + 1 end
if args[cfg.arg.image] then ret = ret + 1 end
return ret
end
local function renderAboveRow(tbl)
if not args[cfg.arg.above] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.aboveclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.abovestyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
-- id for aria-labelledby attribute, if no title
:attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil)
:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))
end
local function renderBelowRow(tbl)
if not args[cfg.arg.below] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.belowclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.belowstyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))
end
local function renderListRow(tbl, index, listnum, listnums_size)
local row = tbl:tag('tr')
if index == 1 and args[cfg.arg.imageleft] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 2px 0 0')
:cssText(args[cfg.arg.imageleftstyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.imageleft]))
end
local group_and_num = format(cfg.arg.group_and_num, listnum)
local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum)
if args[group_and_num] then
local groupCell = row:tag('th')
-- id for aria-labelledby attribute, if lone group with no title or above
if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then
groupCell
:attr('id', mw.uri.anchorEncode(args[cfg.arg.group1]))
end
groupCell
:attr('scope', 'row')
:addClass(cfg.class.navbox_group)
:addClass(args[cfg.arg.groupclass])
:cssText(args[cfg.arg.basestyle])
-- If groupwidth not specified, minimize width
:css('width', args[cfg.arg.groupwidth] or '1%')
groupCell
:cssText(args[cfg.arg.groupstyle])
:cssText(args[groupstyle_and_num])
:wikitext(args[group_and_num])
end
local listCell = row:tag('td')
if args[group_and_num] then
listCell
:addClass(cfg.class.navbox_list_with_group)
else
listCell:attr('colspan', 2)
end
if not args[cfg.arg.groupwidth] then
listCell:css('width', '100%')
end
local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing
if index % 2 == 1 then
rowstyle = args[cfg.arg.oddstyle]
else
rowstyle = args[cfg.arg.evenstyle]
end
local list_and_num = format(cfg.arg.list_and_num, listnum)
local listText = args[list_and_num]
local oddEven = cfg.marker.oddeven
if listText:sub(1, 12) == '</div><table' then
-- Assume list text is for a subgroup navbox so no automatic striping for this row.
oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part
end
local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum)
local listclass_and_num = format(cfg.arg.listclass_and_num, listnum)
listCell
:css('padding', '0')
:cssText(args[cfg.arg.liststyle])
:cssText(rowstyle)
:cssText(args[liststyle_and_num])
:addClass(cfg.class.navbox_list)
:addClass(cfg.class.navbox_part .. oddEven)
:addClass(args[cfg.arg.listclass])
:addClass(args[listclass_and_num])
:tag('div')
:css('padding',
(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em'
)
:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))
if index == 1 and args[cfg.arg.image] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 0 0 2px')
:cssText(args[cfg.arg.imagestyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.image]))
end
end
local function has_list_class(htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, _ in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles()
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles)
local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar() and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because most navboxes will emit only
-- one of these classes [hlist_note]
return hlist_styles .. plainlist_styles
end
local function needsHorizontalLists(border)
if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then
return false
end
return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)
end
local function hasBackgroundColors()
for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,
cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('background', 1, true) then
return true
end
end
return false
end
local function hasBorders()
for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,
cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('border', 1, true) then
return true
end
end
return false
end
local function isIllegible()
local styleratio = require('Module:Color contrast')._styleratio
for key, style in pairs(args) do
if tostring(key):match(cfg.pattern.style) then
if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then
return true
end
end
end
return false
end
local function getTrackingCategories(border)
local cats = {}
if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end
if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end
if isIllegible() then table.insert(cats, cfg.category.illegible) end
if hasBorders() then table.insert(cats, cfg.category.borders) end
return cats
end
local function renderTrackingCategories(builder, border)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 then return end -- not in template space
local subpage = title.subpageText
if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox
or subpage == cfg.keyword.subpage_testcases then return end
for _, cat in ipairs(getTrackingCategories(border)) do
builder:wikitext('[[Category:' .. cat .. ']]')
end
end
local function renderMainTable(border, listnums)
local tbl = mw.html.create('table')
:addClass(cfg.class.nowraplinks)
:addClass(args[cfg.arg.bodyclass])
local state = args[cfg.arg.state]
if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then
if state == cfg.keyword.state_collapsed then
state = cfg.class.collapsed
end
tbl
:addClass(cfg.class.collapsible)
:addClass(state or cfg.class.autocollapse)
end
tbl:css('border-spacing', 0)
if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then
tbl
:addClass(cfg.class.navbox_subgroup)
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
else -- regular navbox - bodystyle and style will be applied to the wrapper table
tbl
:addClass(cfg.class.navbox_inner)
:css('background', 'transparent')
:css('color', 'inherit')
end
tbl:cssText(args[cfg.arg.innerstyle])
renderTitleRow(tbl)
renderAboveRow(tbl)
local listnums_size = #listnums
for i, listnum in ipairs(listnums) do
renderListRow(tbl, i, listnum, listnums_size)
end
renderBelowRow(tbl)
return tbl
end
local function add_navbox_styles(hiding_templatestyles)
local frame = mw.getCurrentFrame()
-- This is a lambda so that it doesn't need the frame as a parameter
local function add_user_styles(templatestyles)
if templatestyles and templatestyles ~= '' then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
end
return ''
end
-- get templatestyles. load base from config so that Lua only needs to do
-- the work once of parser tag expansion
local base_templatestyles = cfg.templatestyles
local templatestyles = add_user_styles(args[cfg.arg.templatestyles])
local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])
-- The 'navbox-styles' div exists to wrap the styles to work around T200206
-- more elegantly. Instead of combinatorial rules, this ends up being linear
-- number of CSS rules.
return mw.html.create('div')
:addClass(cfg.class.navbox_styles)
:wikitext(
add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles'
base_templatestyles ..
templatestyles ..
child_templatestyles ..
table.concat(hiding_templatestyles)
)
:done()
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
function p._navbox(navboxArgs)
args = navboxArgs
local hiding_templatestyles = move_hiding_templatestyles(args)
local listnums = {}
for k, _ in pairs(args) do
if type(k) == 'string' then
local listnum = k:match(cfg.pattern.listnum)
if listnum then table.insert(listnums, tonumber(listnum)) end
end
end
table.sort(listnums)
local border = mw.text.trim(args[cfg.arg.border] or args[1] or '')
if border == cfg.keyword.border_child then
border = cfg.keyword.border_subgroup
end
-- render the main body of the navbox
local tbl = renderMainTable(border, listnums)
local res = mw.html.create()
-- render the appropriate wrapper for the navbox, based on the border param
if border == cfg.keyword.border_none then
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]
and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(
args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]
)
)
else
nav:attr('aria-label', cfg.aria_label)
end
elseif border == cfg.keyword.border_subgroup then
-- We assume that this navbox is being rendered in a list cell of a
-- parent navbox, and is therefore inside a div with padding:0em 0.25em.
-- We start with a </div> to avoid the padding being applied, and at the
-- end add a <div> to balance out the parent's </div>
res
:wikitext('</div>')
:node(tbl)
:wikitext('<div>')
else
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:addClass(cfg.class.navbox)
:addClass(args[cfg.arg.navboxclass])
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
:css('padding', '3px')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above]
or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1])
)
else
nav:attr('aria-label', cfg.aria_label)
end
end
if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then
renderTrackingCategories(res, border)
end
return striped(tostring(res), border)
end
function p.navbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
args = getArgs(frame, {wrappers = {cfg.pattern.navbox}})
-- Read the arguments in the order they'll be output in, to make references
-- number in the right order.
local _
_ = args[cfg.arg.title]
_ = args[cfg.arg.above]
-- Limit this to 20 as covering 'most' cases (that's a SWAG) and because
-- iterator approach won't work here
for i = 1, 20 do
_ = args[format(cfg.arg.group_and_num, i)]
_ = args[format(cfg.arg.list_and_num, i)]
end
_ = args[cfg.arg.below]
return p._navbox(args)
end
return p
5abf477a4f472e7b9f2543257d84327000684555
Module:Citation
828
319
628
627
2023-04-27T18:15:33Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].')
b09b01dacd314f37060769a4fc6b8f027c247b86
Module:Unsubst
828
320
630
629
2023-04-27T18:15:34Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local checkType = require('libraryUtil').checkType
local p = {}
local BODY_PARAM = '$B'
local specialParams = {
['$params'] = 'parameter list',
['$aliases'] = 'parameter aliases',
['$flags'] = 'flags',
['$B'] = 'template content',
['$template-name'] = 'template invocation name override',
}
function p.main(frame, body)
-- If we are substing, this function returns a template invocation, and if
-- not, it returns the template body. The template body can be specified in
-- the body parameter, or in the template parameter defined in the
-- BODY_PARAM variable. This function can be called from Lua or from
-- #invoke.
-- Return the template body if we aren't substing.
if not mw.isSubsting() then
if body ~= nil then
return body
elseif frame.args[BODY_PARAM] ~= nil then
return frame.args[BODY_PARAM]
else
error(string.format(
"no template content specified (use parameter '%s' from #invoke)",
BODY_PARAM
), 2)
end
end
-- Sanity check for the frame object.
if type(frame) ~= 'table'
or type(frame.getParent) ~= 'function'
or not frame:getParent()
then
error(
"argument #1 to 'main' must be a frame object with a parent " ..
"frame available",
2
)
end
-- Find the invocation name.
local mTemplateInvocation = require('Module:Template invocation')
local name
if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then
name = frame.args['$template-name'] -- override whatever the template name is with this name
else
name = mTemplateInvocation.name(frame:getParent():getTitle())
end
-- Combine passed args with passed defaults
local args = {}
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
else
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
end
-- Trim parameters, if not specified otherwise
if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then
for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end
end
-- Pull information from parameter aliases
local aliases = {}
if frame.args['$aliases'] then
local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' )
for k, v in ipairs( list ) do
local tmp = mw.text.split( v, '%s*>%s*' )
aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2])
end
end
for k, v in pairs( aliases ) do
if args[k] and ( not args[v] or args[v] == '' ) then
args[v] = args[k]
end
args[k] = nil
end
-- Remove empty parameters, if specified
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then
local tmp = 0
for k, v in ipairs( args ) do
if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then
tmp = k
else
break
end
end
for k, v in pairs( args ) do
if v == '' then
if not (type(k) == 'number' and k < tmp) then args[k] = nil end
end
end
end
-- Order parameters
if frame.args['$params'] then
local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {}
for k, v in ipairs(params) do
v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v
if args[v] then tmp[v], args[v] = args[v], nil end
end
for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end
args = tmp
end
return mTemplateInvocation.invocation(name, args)
end
p[''] = p.main -- For backwards compatibility
return p
7f01ffc8aa2ac4a4772f14c12e0b77e384ecabb6
Module:InfoboxImage
828
322
638
637
2023-04-27T18:15:38Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- class - HTML classes to add to the image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center = frame.args["center"];
local class = frame.args["class"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if class ~= nil and class ~= "" then
result = result .. "|class=" .. class;
end
-- if alt value is a keyword then do not use as a description
if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil;
end
if title ~= "" and title ~= nil then
-- does title param contain any templatestyles? If yes then set to blank.
if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil;
end
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
end
result = result .. "]]";
return result;
end
end
return i;
0ee5fe75ba239fc5c9cedc81ca11bdc0be068542
Module:If empty
828
323
640
639
2023-04-27T18:15:38Z
BEELETH
2
1 revision imported: Import from Wikipedia
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
for k,v in ipairs(args) do
if v ~= '' then
return v
end
end
end
return p
4790391408957dea3ff9f453834c05f6b379a45c
Module:Documentation/config
828
213
642
546
2023-04-27T18:19:09Z
BEELETH
2
will it work? lets find out..........
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local _format = require('Module:TNT').format
local function format(id)
return _format('I18n/Documentation', id)
end
local cfg = {} -- Do not edit this line.
cfg['templatestyles-scr'] = 'Module:Documentation/styles.css'
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-template']
-- The name of the template that displays the protection icon (a padlock on enwiki).
cfg['protection-template'] = 'PP-template'
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
-- cfg['protection-template-args']
-- Any arguments to send to the protection template. This should be a Lua table.
-- For example, if the protection template is "pp-template", and the wikitext template invocation
-- looks like "{{pp-template|docusage=yes}}", then this table should look like "{docusage = 'yes'}".
--]]
cfg['protection-template-args'] = {docusage = 'yes'}
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[Image:Edit In Sandbox Icon - Color.svg|40px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = format('sandbox-notice-pagetype-template')
cfg['sandbox-notice-pagetype-module'] = format('sandbox-notice-pagetype-module')
cfg['sandbox-notice-pagetype-other'] = format('sandbox-notice-pagetype-other')
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = format('sandbox-notice-blurb')
cfg['sandbox-notice-diff-blurb'] = format('sandbox-notice-diff-blurb')
cfg['sandbox-notice-compare-link-display'] = format('sandbox-notice-compare-link-display')
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = format('sandbox-notice-testcases-blurb')
cfg['sandbox-notice-testcases-link-display'] = format('sandbox-notice-testcases-link-display')
cfg['sandbox-notice-testcases-run-blurb'] = format('sandbox-notice-testcases-run-blurb')
cfg['sandbox-notice-testcases-run-link-display'] = format('sandbox-notice-testcases-run-link-display')
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = format('transcluded-from-blurb')
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = format('create-module-doc-blurb')
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = format('experiment-blurb-template')
cfg['experiment-blurb-module'] = format('experiment-blurb-module')
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = format('sandbox-link-display')
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = format('sandbox-edit-link-display')
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = format('sandbox-create-link-display')
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = format('compare-link-display')
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = format('mirror-link-display')
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = format('testcases-link-display')
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = format('testcases-edit-link-display')
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = format('testcases-create-link-display')
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = format('add-categories-blurb')
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = format('subpages-blurb')
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = format('subpages-link-display')
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = format('template-pagetype')
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = format('module-pagetype')
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = format('default-pagetype')
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['file-docpage-preload']
-- Preload file for documentation page in the file namespace.
cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- Print version configuration
----------------------------------------------------------------------------------------------------
-- cfg['print-subpage']
-- The name of the template subpage used for print versions.
cfg['print-subpage'] = 'Print'
-- cfg['print-link-display']
-- The text to display when linking to the /Print subpage.
cfg['print-link-display'] = '/Print'
-- cfg['print-blurb']
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg['print-link-display'].
cfg['print-blurb'] = format('print-blurb')
-- cfg['display-print-category']
-- Set to true to enable output of cfg['print-category'] if a /Print subpage exists.
-- This should be a boolean value (either true or false).
cfg['display-print-category'] = true
-- cfg['print-category']
-- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists.
cfg['print-category'] = 'Templates with print versions'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['main-div-id']
-- The "id" attribute of the main HTML "div" tag.
cfg['main-div-id'] = 'template-documentation'
-- cfg['main-div-classes']
-- The CSS classes added to the main HTML "div" tag.
cfg['main-div-class'] = 'ts-doc-doc'
cfg['header-div-class'] = 'ts-doc-header'
cfg['heading-div-class'] = 'ts-doc-heading'
cfg['content-div-class'] = 'ts-doc-content'
cfg['footer-div-class'] = 'ts-doc-footer plainlinks'
cfg['sandbox-class'] = 'ts-doc-sandbox'
-- cfg['start-box-linkclasses']
-- The CSS classes used for the [view][edit][history] or [create] links in the start box.
cfg['start-box-linkclasses'] = 'ts-tlinks-tlinks mw-editsection-like plainlinks'
-- cfg['start-box-link-id']
-- The HTML "id" attribute for the links in the start box.
cfg['start-box-link-id'] = 'doc_editlinks'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
79bc957b39b5b752fa4c2e2e80a35faa01901425
Module:Documentation
828
212
643
424
2023-04-27T18:22:32Z
BEELETH
2
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
local messageBox = require('Module:Message box')
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local i18n = mw.loadData('Module:Documentation/i18n')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-type', cfgKey, expectType, type(msg)), 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-empty', '$' .. match, cfgKey), 4)
end
local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
return ret
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
return '<small>(' .. table.concat(ret, ' | ') .. ')</small>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Load TemplateStyles
----------------------------------------------------------------------------
p.main = function(frame)
local parent = frame.getParent(frame)
local output = p._main(parent.args)
return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output
end
----------------------------------------------------------------------------
-- Main function
----------------------------------------------------------------------------
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--
-- Messages:
-- 'main-div-id' --> 'template-documentation'
-- 'main-div-classes' --> 'template-documentation iezoomfix'
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
-- This div tag is from {{documentation/start box}}, but moving it here
-- so that we don't have to worry about unclosed tags.
:tag('div')
:attr('id', message('main-div-id'))
:addClass(message('main-div-class'))
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:done()
:wikitext(p._endBox(args, env))
:wikitext(p.addTrackingCategories(env))
return tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title objects and other namespace- or
-- path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
-- env.printTitle - the print version of the template, located at the /Print subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.printTitle()
--[[
-- Title object for the /Print subpage.
-- Messages:
-- 'print-subpage' --> 'Print'
--]]
return env.templateTitle:subPageTitle(message('print-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the same as the
-- subject namespace. However, pages in the Article, File, MediaWiki or Category
-- namespaces must have their /doc, /sandbox and /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[w:Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[w:Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local frame = mw.getCurrentFrame()
local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed.
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if isPreviewing or not compareUrl then
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
else
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
text = text .. makeCategoryLink(message('sandbox-category'))
omargs.text = text
omargs.class = message('sandbox-class')
return messageBox.main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local title = env.title
local protectionLevels
local protectionTemplate = message('protection-template')
local namespace = title.namespace
if not (protectionTemplate and (namespace == 10 or namespace == 828)) then
-- Don't display the protection template if we are not in the template or module namespaces.
return nil
end
protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editLevels = protectionLevels.edit
local moveLevels = protectionLevels.move
if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then
-- The page is full-move protected, or full, template, or semi-protected.
local frame = mw.getCurrentFrame()
return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = i18n['view-link-display']
data.editLinkDisplay = i18n['edit-link-display']
data.historyLinkDisplay = i18n['history-link-display']
data.purgeLinkDisplay = i18n['purge-link-display']
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 6 then -- File namespace
preload = message('file-docpage-preload')
elseif subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = i18n['create-link-display']
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
return s
:gsub('%[', '[') -- Replace square brackets with HTML entities.
:gsub('%]', ']')
end
local ret
local docTitle = data.docTitle
local title = data.title
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks'
-- 'start-box-link-id' --> 'doc_editlinks'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = i18n['template-namespace-heading']
elseif subjectSpace == 828 then -- Module namespace
data.heading = i18n['module-namespace-heading']
elseif subjectSpace == 6 then -- File namespace
data.heading = i18n['file-namespace-heading']
else
data.heading = i18n['other-namespaces-heading']
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
data.linksClass = message('start-box-linkclasses')
data.linksId = message('start-box-link-id')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
:addClass(message('header-div-class'))
:tag('div')
:addClass(message('heading-div-class'))
:wikitext(data.heading)
local links = data.links
if links then
sbox
:tag('div')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
local cbox = mw.html.create('div')
cbox
:addClass(message('content-div-class'))
:wikitext('\n' .. (content or '') .. '\n')
return tostring(cbox)
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the footer text field.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '')
text = text .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
if printBlurb then
text = text .. '<br />' .. printBlurb
end
end
end
local ebox = mw.html.create('div')
ebox
:addClass(message('footer-div-class'))
:wikitext(text)
return tostring(ebox)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[w:Wikipedia:Template documentation|documentation]]
-- is [[w:Wikipedia:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[w:Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle or args.content then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = i18n['edit-link-display']
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = i18n['history-link-display']
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = i18n['create-link-display']
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
function p.makePrintBlurb(args, env)
--[=[
-- Generates the blurb displayed when there is a print version of the template available.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'print-link-display' --> '/Print'
-- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]'
-- .. ' of this template exists at $1.'
-- .. ' If you make a change to this template, please update the print version as well.'
-- 'display-print-category' --> true
-- 'print-category' --> 'Templates with print versions'
--]=]
local printTitle = env.printTitle
if not printTitle then
return nil
end
local ret
if printTitle.exists then
local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display'))
ret = message('print-blurb', {printLink})
local displayPrintCategory = message('display-print-category', nil, 'boolean')
if displayPrintCategory then
ret = ret .. makeCategoryLink(message('print-category'))
end
end
return ret
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
a029650bff998bd1a25784b49e99f984f068d85d
Module:Lua banner/config
828
324
644
2023-04-27T18:24:41Z
BEELETH
2
Created page with "local cfg = {} -- Don’t touch this line. -- Subpage blacklist: these subpages will not be categorized (except for the -- error category, which is always added if there is an error). -- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have -- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules, -- so they *will* have categories. All rules should be in the -- ['<subpage name>'] = true, -- format. cfg['subpa..."
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Allow wishes: whether wishes for conversion to Lua are allowed.
-- If true, calls with zero parameters are valid, and considered to be wishes:
-- The box’s text is “This template should use Lua”, and cfg['wish_category'] is
-- added. If false, such calls are invalid, an error message appears, and
-- cfg['error_category'] is added.
cfg['allow_wishes'] = false
-- Default category: this category is added if the module call contains errors
-- (e.g. no module listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Lua templates with errors'
-- Wish category: this category is added if no module is listed, and wishes are
-- allowed. (Not used if wishes are not allowed.) A category name without
-- namespace, or nil to disable categorization.
cfg['wish_category'] = nil
-- Default category: this category is added if none of the below module_categories
-- matches the first module listed. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Lua-based templates'
-- Module categories: one of these categories is added if the first listed module
-- is the listed module (e.g. {{Lua|Module:String}} adds
-- [[Category:Lua String-based templates]].) Format:
-- ['<module name>'] = '<category name>'
-- where neither <module name> nor <category name> contains namespace. An empty
-- table (i.e. no module-based categorization) will suffice on smaller wikis.
cfg['module_categories'] = {
['Citation'] = 'Lua-based citation templates',
['Citation/CS1'] = 'Lua-based citation templates',
}
return cfg -- Don’t touch this line.
96ff2360e00fa7bf1df8fa9bea988789b8a82cab
Module:Hatnote
828
70
645
390
2023-04-27T18:27:43Z
BEELETH
2
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
local formatLink -- lazily initialise [[Module:Format link]] ._formatLink
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.defaultClasses(inline)
-- Provides the default hatnote classes as a space-separated string; useful
-- for hatnote-manipulation modules like [[Module:Hatnote group]].
return
(inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' ..
'navigation-not-searchable'
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'disambiguation'
return mw.ustring.format('%s (%s)', page, disambiguator)
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Module:Yesno')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return mw.ustring.format(
'<strong class="error">Error: %s%s.</strong>%s',
msg,
helpText,
category
)
end
local curNs = mw.title.getCurrentTitle().namespace
p.missingTargetCat =
--Default missing target category, exported for use in related modules
((curNs == 0) or (curNs == 14)) and
'Articles with hatnote templates targeting a nonexistent page' or nil
function p.quote(title)
--Wraps titles in quotation marks. If the title starts/ends with a quotation
--mark, kerns that side as with {{-'}}
local quotationMarks = {
["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true
}
local quoteLeft, quoteRight = -- Test if start/end are quotation marks
quotationMarks[string.sub(title, 1, 1)],
quotationMarks[string.sub(title, -1, -1)]
if quoteLeft or quoteRight then
title = mw.html.create("span"):wikitext(title)
end
if quoteLeft then title:css("padding-left", "0.15em") end
if quoteRight then title:css("padding-right", "0.15em") end
return '"' .. tostring(title) .. '"'
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
if not s then
return p.makeWikitextError(
'no text specified',
'Template:Hatnote#Errors',
args.category
)
end
return p._hatnote(s, {
extraclasses = args.extraclasses,
selfref = args.selfref
})
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local inline = options.inline
local hatnote = mw.html.create(inline == 1 and 'span' or 'div')
local extraclasses
if type(options.extraclasses) == 'string' then
extraclasses = options.extraclasses
end
hatnote
:attr('role', 'note')
:addClass(p.defaultClasses(inline))
:addClass(extraclasses)
:addClass(options.selfref and 'selfref' or nil)
:wikitext(s)
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' }
} .. tostring(hatnote)
end
return p
3ae1ed7094c5005ca0896395ec9a587287a0bef1
Template:Hatnote
10
55
646
109
2023-04-27T18:55:29Z
BEELETH
2
please please please work :(
wikitext
text/x-wiki
<div style="margin-left:2em; margin-right: 2em;>''{{{1}}}''</div>
<!-- The wikipedia templates uses :, which generated dd and dt tags. That is not ideal for accessibility. --><noinclude>
This is a general purpose template for all kind of [https://en.wikipedia.org/wiki/Wikipedia:Hatnote hatnotes]. '''Hatnotes''' are a small annotation above a page or a section that can help the reader navigate. It's used for example to clarify what a section is about and link to other pages the reader may want to read.
== Example usage ==
<pre><nowiki>
=== Heading ===
{{hatnote|This section is about headings in text, for the human body part see [[Head|Head]]. <br> For the the first level heading see the main article [[Headline]].</br> H1 redirects here, for the car see [[Hyundai#H1|Hyundai H1]].}}
The first sentence of the section is here.
</nowiki></pre>
=== Heading ===
{{hatnote|This section is about headings in text, for the human body part see [[Head|Head]]. <br> For the the first level heading see the main article [[Headline]].</br> H1 redirects here, for the car see [[Hyundai#H1|Hyundai H1]].}}
The first sentence of the section is here.
<templatedata>
{
"params": {
"1": {
"label": "content",
"description": "the content of the note",
"example": "For the xxx see [[yyy]]."
}
},
"description": "Adds a annotation for the reader about the content that follows. Usually used after a heading."
}
</templatedata>
[[Category:Templates]]
</noinclude>
5e58f83d6fa53ed06f85139184aff1d651804efe
Module:Userbox
828
325
648
2023-04-27T19:31:36Z
BEELETH
2
ya
Scribunto
text/plain
-- This module implements {{userbox}}.
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function checkNum(val, default)
-- Checks whether a value is a number greater than or equal to zero. If so,
-- returns it as a number. If not, returns a default value.
val = tonumber(val)
if val and val >= 0 then
return val
else
return default
end
end
local function addSuffix(num, suffix)
-- Turns a number into a string and adds a suffix.
if num then
return tostring(num) .. suffix
else
return nil
end
end
local function checkNumAndAddSuffix(num, default, suffix)
-- Checks a value with checkNum and adds a suffix.
num = checkNum(num, default)
return addSuffix(num, suffix)
end
local function makeCat(cat, sort)
-- Makes a category link.
if sort then
return mw.ustring.format('[[Category:%s|%s]]', cat, sort)
else
return mw.ustring.format('[[Category:%s]]', cat)
end
end
--------------------------------------------------------------------------------
-- Argument processing
--------------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local origArgs = require('Module:Arguments').getArgs(frame)
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.main(funcName, args)
end
end
p.userbox = makeInvokeFunc('_userbox')
p['userbox-2'] = makeInvokeFunc('_userbox-2')
p['userbox-r'] = makeInvokeFunc('_userbox-r')
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.main(funcName, args)
local userboxData = p[funcName](args)
local userbox = p.render(userboxData)
local cats = p.categories(args)
return userbox .. (cats or '')
end
function p._userbox(args)
-- Does argument processing for {{userbox}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
data.infoClass = args['info-class']
-- Get id values.
local id = args.logo or args[3] or args.id
data.id = id
data.showId = id and true or false
data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.idTextAlign = args['id-a'] or 'center'
data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')
data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor
data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0'
data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.idOtherParams = args['logo-other-param'] or args['id-op']
data.idClass = args['id-class']
return data
end
p['_userbox-2'] = function (args)
-- Does argument processing for {{userbox-2}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args[2] or args['info-c'] or '#eeeeee'
-- Get info values.
data.info = args[4] or args.info or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt')
data.infoColor = args[8] or args['info-fc'] or 'black'
data.infoPadding = args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-lh'] or '1.25em'
data.infoOtherParams = args['info-op']
-- Get id values.
data.showId = true
data.id = args.logo or args[3] or args.id1 or 'id1'
data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px')
data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd'
data.idTextAlign = 'center'
data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt')
data.idLineHeight = args['id1-lh'] or '1.25em'
data.idColor = args['id1-fc'] or data.infoColor
data.idPadding = args['id1-p'] or '0 1px 0 0'
data.idOtherParams = args['id1-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[5] or args.id2 or 'id2'
data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px')
data.id2Height = data.idHeight
data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd'
data.id2TextAlign = 'center'
data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt')
data.id2LineHeight = args['id2-lh'] or '1.25em'
data.id2Color = args['id2-fc'] or data.infoColor
data.id2Padding = args['id2-p'] or '0 0 0 1px'
data.id2OtherParams = args['id2-op']
return data
end
p['_userbox-r'] = function (args)
-- Does argument processing for {{userbox-r}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get id values.
data.showId = false -- We only show id2 in userbox-r.
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-align'] or args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[3] or args.id or 'id'
data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.id2TextAlign = args['id-a'] or 'center'
data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')
data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor
data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px'
data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.id2OtherParams = args['logo-other-param'] or args['id-op']
return data
end
function p.render(data)
-- Renders the userbox html using the content of the data table.
-- Render the div tag html.
local root = mw.html.create('div')
root
:css('float', data.float)
:css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or ''))
:css('margin', '1px')
:css('width', data.width)
:addClass('wikipediauserbox')
:addClass(data.bodyClass)
-- Render the table tag html.
local tableroot = root:tag('table')
tableroot
:css('border-collapse', 'collapse')
:css('width', data.width)
:css('margin-bottom', '0')
:css('margin-top', '0')
:css('background', data.backgroundColor)
-- Render the id html.
local tablerow = tableroot:tag('tr')
if data.showId then
tablerow:tag('th')
:css('border', '0')
:css('width', data.idWidth)
:css('height', data.idHeight)
:css('background', data.idBackgroundColor)
:css('text-align', data.idTextAlign)
:css('font-size', data.idFontSize)
:css('color', data.idColor)
:css('padding', data.idPadding)
:css('line-height', data.idLineHeight)
:css('vertical-align', 'middle')
:cssText(data.idOtherParams)
:addClass(data.idClass)
:wikitext(data.id)
end
-- Render the info html.
tablerow:tag('td')
:css('border', '0')
:css('text-align', data.infoTextAlign)
:css('font-size', data.infoFontSize)
:css('padding', data.infoPadding)
:css('height', data.infoHeight)
:css('line-height', data.infoLineHeight)
:css('color', data.infoColor)
:css('vertical-align', 'middle')
:cssText(data.infoOtherParams)
:addClass(data.infoClass)
:wikitext(data.info)
-- Render the second id html.
if data.showId2 then
tablerow:tag('th')
:css('border', '0')
:css('width', data.id2Width)
:css('height', data.id2Height)
:css('background', data.id2BackgroundColor)
:css('text-align', data.id2TextAlign)
:css('font-size', data.id2FontSize)
:css('color', data.id2Color)
:css('padding', data.id2Padding)
:css('line-height', data.id2LineHeight)
:css('vertical-align', 'middle')
:cssText(data.id2OtherParams)
:wikitext(data.id2)
end
local title = mw.title.getCurrentTitle()
if (title.namespace == 2) and not title.text:match("/") then
return tostring(root) -- regular user page
elseif title.namespace == 14 then
return tostring(root) -- category
elseif title.isTalkPage then
return tostring(root) -- talk page
end
local function has_text(wikitext)
local function get_alt(text)
return text:match("|alt=([^|]*)") or ""
end
wikitext = wikitext:gsub("]]", "|]]")
wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt)
wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt)
wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt)
return mw.text.trim(wikitext) ~= ""
end
return tostring(root)
end
function p.categories(args, page)
-- Gets categories
-- The page parameter makes the function act as though the module was being called from that page.
-- It is included for testing purposes.
local cats = {}
cats[#cats + 1] = args.usercategory
cats[#cats + 1] = args.usercategory2
cats[#cats + 1] = args.usercategory3
if #cats > 0 and not require("Module:Yesno")(args.nocat) then
-- Get the title object
local title
if page then
title = mw.title.new(page)
else
title = mw.title.getCurrentTitle()
end
-- Build category handler arguments.
local chargs = {}
chargs.page = page
chargs.main = '[[Category:Pages with misplaced templates]]'
if title.namespace == 2 then
-- User namespace.
local user = ''
for i, cat in ipairs(cats) do
user = user .. makeCat(cat)
end
return user
elseif title.namespace == 10 then
-- Template namespace.
local basepage = title.baseText
local template = ''
for i, cat in ipairs(cats) do
template = template .. makeCat(cat, ' ' .. basepage)
end
return template
end
end
end
return p
aac333efff739f0243d8ffced6f4296cffb8d7e9
Template:Userbox
10
326
649
2023-04-27T19:31:49Z
BEELETH
2
ya
wikitext
text/x-wiki
{{#invoke:userbox|userbox}}<noinclude>{{documentation}}</noinclude>
6813e8e31cadc62df2379b5fae9ea23c23f29e97
Template:Userbox/doc
10
327
650
2023-04-27T19:32:11Z
BEELETH
2
ya
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
This template can be used to quickly create a [[w:Wikipedia:Userboxes|userbox]] for display on a user's [[Wikipedia:User pages|user page]] without having to know HTML or Wikitable syntax.
== Usage ==
<!-- Abstract usage of the template, one variable per row. -->
<pre style="overflow: auto">
{{userbox
| bodyclass = <!--Adds an HTML class attribute to the entire template's HTML table, to allow for styling, emission of microformats, etc.-->
| border-c = <!--border color (default=id-c or #999999)-->
| border-s = <!--border width in pixels (default=1)-->
| float = <!--left|right|none (default=left)-->
| id = <!--id image or text (image size should normally not exceed 90x45px)-->
| id-a = <!--id horizontal alignment left/center/right/justify (default=center)-->
| id-c = <!--id background color (default=#DDDDDD)-->
| id-fc = <!--id font color (default=info-fc or black)-->
| id-h = <!--id box height in pixels (default=45)-->
| id-lh = <!--id line height (default=1.25em)-->
| id-op = <!--id other CSS parameters-->
| id-p = <!--id cell padding (default=0 1px 0 0)-->
| id-s = <!--id text size in points (default=14)-->
| id-w = <!--id box width in pixels (default=45)-->
| info-class = <!--Adds an HTML class attribute to the "info" HTML table-row, to allow for styling, emission of microformats, etc.-->
| info = <!--info text or image-->
| info-a = <!--info horizontal alignment left/center/right/justify (default=left)-->
| info-c = <!--info background color (default=#EEEEEE)-->
| info-fc = <!--info font color (default=black)-->
| info-lh = <!--info line height (default=1.25em)-->
| info-op = <!--info other CSS parameters-->
| info-p = <!--info padding (default=0 4px 0 4px)-->
| info-s = <!--info text size in points (default=8)-->
| nocat = <!--block page category declarations; see [[WP:NOCAT]] (default=false)-->
| usercategory = <!--user category (optional, unlinked and without the "Category:" part)-->
| usercategory2 = <!--user category (optional)-->
| usercategory3 = <!--user category (optional)-->
| usercategory4 = <!--user category (optional)-->
| usercategory5 = <!--user category (optional)-->
}}
</pre>
* All parameters are optional.
* Images should normally be scaled to x45px or less.
<!-- Explain what this template's parameters do -- if no params, delete the definition. -->
Most HTML-based tables use only a handful of these attributes. The following subset can be used to quickly convert an HTML userbox into the format used here:
<pre>
{{userbox
| border-c =
| id =
| id-c =
| id-fc =
| id-s =
| info =
| info-c =
| info-fc =
| info-lh =
| info-s =
}}</pre>
== Examples ==
{|
! style="width: 300px;" | Code
! Result
|-
| <pre>{{userbox
| border-c = #aaffaa
| border-s = 2
| id = foo
| id-c = #ffffee
| id-s = 20
| info = ''foo bar''
| info-c = #ffeeff
| info-s = 12
}}</pre> || {{userbox|id=foo|id-s=20|id-c=#ffffee|info=''foo bar''|info-c=#ffeeff|info-s=12|border-c=#aaffaa|border-s=2}}
|-
| colspan="2"| Below example shows the default appearance of a userbox, which is (much) higher than the 45px.<br>Compare the height of the one below with the above userbox.
|-
| <pre>{{userbox
| border-c = #aaffaa
| border-s = 2
| id = foo logo
| id-c = #ffffee
| info = ''We are trying to see
default distance in between text
lines, see the distance in
between cell content and its border,
and also see total height.''
| info-c = #ffeeff
}}</pre> || {{userbox|id=foo logo|id-c=#ffffee|info=''We are trying to see default distance in between text lines, see the distance in between cell content and its border, and also see total height.''|info-c=#ffeeff|border-c=#aaffaa|border-s=2}}
|-
| colspan="2"| Below example shows how we can change that userbox and further specify parameters to bring down<br>the overall height of the userbox to the recommended height of 45px, even with four text lines.<br>Cell padding parameter "''info-p''" can also be set at "''1pt 1pt 1pt 2pt''", or "''1pt 2pt''" for better appearance,<br>when there are 4 text lines.
|-
| <pre>{{userbox
| border-c = #aaffaa
| border-s = 1
| id = foo logo
| id-c = #ffffee
| id-lh = 1.1em
| id-s = 14
| info = ''We have specified values
to lessen the distance between
text lines and padding space between
cell content and its border.''
| info-c = #ffeeff
| info-lh = 1.05em
| info-p = 1pt
| info-s = 8
}}</pre> || {{userbox|id=foo logo|id-s=14|id-lh=1.1em|id-c=#ffffee|info=''We have specified values to lessen the distance between text lines and padding space between cell content and its border.''|info-c=#ffeeff|info-s=8|info-p=1pt|info-lh=1.05em|border-c=#aaffaa|border-s=1}}
|-
| colspan="2"| Below example is for advanced users, showing how we can specify other [[w:Cascading Style Sheets|CSS]] properties,for example, "''font-family''",<br>to change the font or "''text-decoration''" to add lines around the text. Below, on the right side are two userboxes:<br>the top one is displayed without either parameters; and the bottom userbox is displayed by using the below code,<br>with the help of the "''info-op''" field.
|-
| <pre>{{userbox
| border-c = #afa
| border-s = 2
| id = foo logo
| id-c = #ffe
| id-lh = 1.1em
| id-s = 14
| info = foo bar
| info-c = #fef
| info-op = font-family: 'Courier New', monospace; text-decoration: wavy overline green;
| info-s = 14
}}</pre> || colspan="2"| {{Userbox|id=foo logo|id-s=14|id-lh=1.1em|id-c=#ffe|info=foo bar|info-c=#fef|info-s=14|border-c=#afa|border-s=2}} <br style="clear:both"> <br /> {{Userbox|id=foo logo|id-s=14|id-lh=1.1em|id-c=#ffe|info=foo bar|info-c=#fef|info-s=14|info-op=font-family: 'Courier New', monospace; text-decoration: wavy overline green;|border-c=#afa|border-s=2}}
|}
==Microformats==
; bodyclass : This parameter is inserted into the "class" attribute for the userbox as a whole.
; info-class : This parameter is inserted into the "class" attribute for the info component.
This template supports the addition of [[w:microformat|microformat]] information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. To flag a userbox as containing [[w:hCard|hCard]] information about a person, for example, add the following parameter:
<pre>
| bodyclass = vcard
</pre>
''or''
<pre>
| info-class = vcard
</pre>
''then'' (for example):
<pre><nowiki>
| title = …the books of <span class="fn">[[Iain Banks]]</span>
</nowiki></pre>
...and so forth.
See [[w:Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia.
== Template Data ==
<TemplateData>{
"description": "This template can be used to quickly create a userbox for display on a user's user page without having to know HTML or Wikitable syntax.",
"params": {
"bodyclass": {
"label": "bodyclass",
"description": "Adds an HTML class attribute to the entire template's HTML table, to allow for styling, emission of microformats, etc.",
"type": "string",
"required": false
},
"border-c": {
"label": "border-c",
"description": "border color",
"type": "string",
"default": "#999",
"required": false
},
"border-s": {
"label": "border-s",
"description": "border width in pixels",
"type": "string",
"default": "1",
"required": false
},
"float": {
"label": "float",
"description": "left|right|none",
"type": "string",
"default": "left",
"required": false
},
"id": {
"label": "id",
"description": "id image or text",
"type": "string",
"required": false
},
"id-a": {
"label": "id-a",
"description": "id horizontal alignment left/center/right/justify",
"type": "string",
"default": "center",
"required": false
},
"id-c": {
"label": "id-c",
"description": "id background color",
"type": "string",
"default": "#d0d0d0",
"required": false
},
"id-fc": {
"label": "id-fc",
"description": "id font color",
"type": "string",
"default": "black",
"required": false
},
"id-h": {
"label": "id-h",
"description": "id box height in pixels",
"type": "string",
"default": "45",
"required": false
},
"id-lh": {
"label": "id-lh",
"description": "id line height",
"type": "string",
"default": "1.25em",
"required": false
},
"id-op": {
"label": "id-op",
"description": "id other CSS parameters",
"type": "string",
"required": false
},
"id-p": {
"label": "id-p",
"description": "id cell padding",
"type": "string",
"default": "0 1px 0 0",
"required": false
},
"id-s": {
"label": "id-s",
"description": "id text size in points",
"type": "string",
"default": "14",
"required": false
},
"id-w": {
"label": "id-w",
"description": "id box width in pixels",
"type": "string",
"default": "45",
"required": false
},
"info-class": {
"label": "info-class",
"description": "Adds an HTML class attribute to the \"info\" HTML table-row, to allow for styling, emission of microformats, etc.",
"type": "string",
"required": false
},
"info": {
"label": "info",
"description": "info text or image",
"type": "string",
"required": false
},
"info-a": {
"label": "info-a",
"description": "info horizontal alignment left/center/right/justify",
"type": "string",
"default": "left",
"required": false
},
"info-c": {
"label": "info-c",
"description": "info background color",
"type": "string",
"default": "#e0e0e0",
"required": false
},
"info-fc": {
"label": "info-fc",
"description": "info font color",
"type": "string",
"default": "black",
"required": false
},
"info-lh": {
"label": "info-lh",
"description": "info line height",
"type": "string",
"default": "1.25em",
"required": false
},
"info-op": {
"label": "info-op",
"description": "info other CSS parameters",
"type": "string",
"required": false
},
"info-p": {
"label": "info-p",
"description": "info padding",
"type": "string",
"default": "0 4px 0 4px",
"required": false
},
"info-s": {
"label": "info-s",
"description": "info text size in points",
"type": "string",
"default": "8",
"required": false
},
"nocat": {
"label": "nocat",
"description": "block page category declarations (see WP:NOCAT)",
"type": "string",
"default": "false",
"required": false
},
"usercategory": {
"label": "usercategory",
"description": "user category (optional)",
"type": "string",
"required": false
},
"usercategory2": {
"label": "usercategory2",
"description": "user category (optional)",
"type": "string",
"required": false
},
"usercategory3": {
"label": "usercategory3",
"description": "user category (optional)",
"type": "string",
"required": false
},
"usercategory4": {
"label": "usercategory4",
"description": "user category (optional)",
"type": "string",
"required": false
},
"usercategory5": {
"label": "usercategory5",
"description": "user category (optional)",
"type": "string",
"required": false
}
},
"format": "block"
}</TemplateData>
<includeonly>[[Category:Templates]]</includeonly>
dd41ebb3f967b6cdfb1f5802c2bdd71bc115e74a
User:BEELETH
2
163
651
325
2023-04-27T19:33:23Z
BEELETH
2
wikitext
text/x-wiki
placeholder text
ac0c50f41ac8bd11c26f13634268964bb35dc157
654
651
2023-04-27T20:55:30Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al
* Hal
* Halb
* Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them
* he/him
* it/its
* that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}}
hi im hal and i run this place
== about me ==
basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about
=== likes ===
* yoeko kurahashi (pls join r/YoekoKurahashi)
* dj technorch
* pokemon
* klonoa
* rhythm games
=== dislikes ===
* olives
* cleaning
* working on the fucken WIKI!!! GOD DAMN!!!!!!!!!!
=== other things about me ===
im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too
== about my works ==
i make things that i like and other people also tend to like my stuff and i think thats pretty cool
=== achievemnet and porfolo ===
halberd haves many achievemnts in his life..........
* character artist and designer for maxein
* made some emojis and stickers for the be an alien: renewal discord server
* emoji artist for the shark army discord server
* open source objects contributor
==== trivial achieves ====
* met rockhopper in og club penguin
* neopets + roblox player of over 10 yrs
* one of the .gg/garfield 10k event jackbox winners
* people like my art and i have been featured a few times in various things
** featured in the nintendo switch news feed for ultimate chicken horse twice
** my art is in the lost media wiki fanart section
* people like using my stuff and i think thats fun
** original creator of some of those clonable mlp skins on manyland
*** shoutout to coffeebug for using my stuff beyond ml we love to see it
** original creator of bunjees + bunjeecorp
** original creator of the anvil skins on manyland
* i can beat my mom at tetris thats cool i think
== trivia ==
* #00FF00
=== name origin ===
halberd is wepon. aswang is aswang. you a jokester?
== contact ==
see beeleth.carrd.co
121a8ca81b60077a24b1908eee9f31aec354d656
659
654
2023-05-23T04:59:23Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al
* Hal
* Halb
* Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them
* he/him
* it/its
* that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}}
hi im hal and i run this place
== about me ==
basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about
=== likes ===
* yoeko kurahashi (pls join r/YoekoKurahashi)
* dj technorch
* pokemon
* klonoa
* rhythm games
=== dislikes ===
* olives
* cleaning
* working on the fucken WIKI!!! GOD DAMN!!!!!!!!!!
=== other things about me ===
im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too
== about my works ==
i make things that i like and other people also tend to like my stuff and i think thats pretty cool
=== achievemnet and porfolo ===
halberd haves many achievemnts in his life..........
* former character artist and designer for maxein (as of this edit the project has been retired)
* made some emojis and stickers for the be an alien: renewal discord server
* emoji artist for the shark army discord server
* open source objects contributor + character cameo in short 1
==== trivial achieves ====
* met rockhopper in og club penguin
* neopets + roblox player of over 10 yrs
* one of the .gg/garfield 10k event jackbox winners
* people like my art and i have been featured a few times in various things
** featured in the nintendo switch news feed for ultimate chicken horse twice
** my art is in the lost media wiki fanart section
* people like using my stuff and i think thats fun
** original creator of some of those clonable mlp skins on manyland
*** shoutout to coffeebug for using my stuff beyond ml we love to see it
** original creator of bunjees + bunjeecorp
** original creator of the anvil skins on manyland
* i can beat my mom at tetris thats cool i think
== trivia ==
* #00FF00
=== name origin ===
halberd is wepon. aswang is aswang. you a jokester?
== contact ==
see beeleth.carrd.co
a7e4503c074475afe82c033b4a3a32c4aaad6c2b
660
659
2023-05-23T05:00:05Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al
* Hal
* Halb
* Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them
* he/him
* it/its
* that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}}
hi im hal and i run this place
== about me ==
basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about
=== likes ===
* yoeko kurahashi (pls join r/YoekoKurahashi)
* dj technorch
* pokemon
* klonoa
* rhythm games
=== dislikes ===
* olives
* cleaning
* working on the fucken WIKI!!! GOD DAMN!!!!!!!!!!
=== other things about me ===
im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too
== about my works ==
i make things that i like and other people also tend to like my stuff and i think thats pretty cool
=== achievemnet and porfolo ===
halberd haves many achievemnts in his life..........
* former character artist and designer for maxein (as of this edit the project has been retired)
* made some emojis and stickers for the be an alien: renewal discord server
* emoji artist for the shark army discord server
* open source objects contributor + character cameo in short 1
==== trivial achieves ====
* met rockhopper in og club penguin
* neopets + roblox player of over 10 yrs
* one of the .gg/garfield 10k event jackbox winners
* people like my art and i have been featured a few times in various things
** featured in the nintendo switch news feed for ultimate chicken horse twice
** my art is in the lost media wiki fanart section
* people like using my stuff and i think thats fun
** original creator of some of those clonable mlp skins on manyland
*** shoutout to coffeebug for using my stuff beyond ml we love to see it
** original creator of bunjees + bunjeecorp
** original creator of the anvil skins on manyland
* i can beat my mom at tetris thats cool i think
== trivia ==
* #00FF00
=== name origin ===
halberd is wepon. aswang is aswang. you a jokester?
== contact ==
see beeleth.carrd.co
38c791e143b89c2d7eb2d42c0df9ac737bf13fbd
661
660
2023-05-23T05:00:44Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al
* Hal
* Halb
* Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them
* he/him
* it/its
* that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}}
== who that little dude on the screen ==
hi im hal and i run this place
== about me ==
basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about
=== likes ===
* yoeko kurahashi (pls join r/YoekoKurahashi)
* dj technorch
* pokemon
* klonoa
* rhythm games
=== dislikes ===
* olives
* cleaning
* working on the fucken WIKI!!! GOD DAMN!!!!!!!!!!
=== other things about me ===
im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too
== about my works ==
i make things that i like and other people also tend to like my stuff and i think thats pretty cool
=== achievemnet and porfolo ===
halberd haves many achievemnts in his life..........
* former character artist and designer for maxein (as of this edit the project has been retired)
* made some emojis and stickers for the be an alien: renewal discord server
* emoji artist for the shark army discord server
* open source objects contributor + character cameo in short 1
==== trivial achieves ====
* met rockhopper in og club penguin
* neopets + roblox player of over 10 yrs
* one of the .gg/garfield 10k event jackbox winners
* people like my art and i have been featured a few times in various things
** featured in the nintendo switch news feed for ultimate chicken horse twice
** my art is in the lost media wiki fanart section
* people like using my stuff and i think thats fun
** original creator of some of those clonable mlp skins on manyland
*** shoutout to coffeebug for using my stuff beyond ml we love to see it
** original creator of bunjees + bunjeecorp
** original creator of the anvil skins on manyland
* i can beat my mom at tetris thats cool i think
== trivia ==
* #00FF00
=== name origin ===
halberd is wepon. aswang is aswang. you a jokester?
== contact ==
see beeleth.carrd.co
c926192a1cb177291032b0169ecfd739a75b8340
662
661
2023-05-23T05:01:29Z
BEELETH
2
wikitext
text/x-wiki
howdy howdyhowdy{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al
* Hal
* Halb
* Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them
* he/him
* it/its
* that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}}
== who that little dude on the screen ==
thats me!!!!!!!!! halberd!!!!!!!!!!!!!!!! idiot
== about me ==
basement-dwelling neckbeard in spirit. im the scary dog-eater your neighbors warned you about
=== likes ===
* yoeko kurahashi (pls join r/YoekoKurahashi)
* dj technorch
* pokemon
* klonoa
* rhythm games
=== dislikes ===
* olives
* cleaning
* working on the fucken WIKI!!! GOD DAMN!!!!!!!!!!
=== other things about me ===
im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too
== about my works ==
i make things that i like and other people also tend to like my stuff and i think thats pretty cool
=== achievemnet and porfolo ===
halberd haves many achievemnts in his life..........
* former character artist and designer for maxein (as of this edit the project has been retired)
* made some emojis and stickers for the be an alien: renewal discord server
* emoji artist for the shark army discord server
* open source objects contributor + character cameo in short 1
==== trivial achieves ====
* met rockhopper in og club penguin
* neopets + roblox player of over 10 yrs
* one of the .gg/garfield 10k event jackbox winners
* people like my art and i have been featured a few times in various things
** featured in the nintendo switch news feed for ultimate chicken horse twice
** my art is in the lost media wiki fanart section
* people like using my stuff and i think thats fun
** original creator of some of those clonable mlp skins on manyland
*** shoutout to coffeebug for using my stuff beyond ml we love to see it
** original creator of bunjees + bunjeecorp
** original creator of the anvil skins on manyland
* i can beat my mom at tetris thats cool i think
== trivia ==
* #00FF00
=== name origin ===
halberd is wepon. aswang is aswang. you a jokester?
== contact ==
see beeleth.carrd.co
84f42b1c43a4f61c7c1665dc30222d2c1a55fd1d
UserWiki:BEELETH
200
328
652
2023-04-27T19:33:27Z
BEELETH
2
import user wiki
wikitext
text/x-wiki
placeholder text
ac0c50f41ac8bd11c26f13634268964bb35dc157
Uncharted Space
0
288
653
647
2023-04-27T20:35:14Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}}
The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
The Uncharted Space is presumably a byproduct of [[Origin]]'s existence, as most things in the entirety of the Vast Space can be traced back to him. It was formed over time out of loose [[ichor]] into a distinct universe that is subject to several inexplicable rules (as most Spaces are).
=== Early history ===
The first parts of the Uncharted Space to take form in the [[Light Side]] are in [[Auophilon]], the former home of the Auophian people; it was situated on a peninsula surrounded by the Grand Ocean on three sides, and an unnamed forest on the other side. Guardians of elements and ideas, the [[Auophian pantheon]], made their first physical appearances around this time. As Auophilon developed, [[kineticism]] also became more prevalent. Though it was initially feared, it came to be known as generally good and allowed for communication with and rituals in honor of the deities the Auophian people revered. The only form of kineticm that was outright forbidden out of fear of misuse was [[alchemy]], which was practiced by some in secret.
Some Auophians left their homeland in search of new land and resources, and the first long-term establishment became [[Citadelonia]]. Due to the immense distance between these [[locations]], communication was not feasible and Auophilon was slowly forgotten by those who left it.
==== Founding of Citadelonia ====
Citadelonia, the walled kingdom, was founded by (TBN); in its early days, it was simply known as Citadelon in honor of Auophilon.
==== Establishment of settlements in, on, and beyond the Grand Ocean ====
TBA: [[Skystone]], [[Terahaven]], [[Blackshore]]
==== Destruction of Auophilon ====
TBA
==== Founding of New Pokopoko, Mudwater, and Gorgondel ====
TBA
=== Within official materials ===
Most events in the Uncharted Space beyond this point are are chronicled through each [[Movement]].
==== ''Movement I: Heavenly Beast'' ====
{{Hatnote|Also see the dedicated page for [[Heavenly Beast]].}}
TBA; royal knights find and slay the heaven dragon, several locations are introduced and established
==== ''Movement II: A Wicked Storm Comes'' ====
{{Hatnote|Also see the dedicated page for [[A Wicked Storm Comes]].}}
TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk
==== ''Movement III: Repentance Fugue'' ====
{{Hatnote|Also see the dedicated page for [[Repentance Fugue]].}}
TBA; qhephion?
==== ''Movement IV: On a Scale From 1 to 10'' ====
{{Hatnote|Also see the dedicated page for [[On a Scale From 1 to 10]].}}
TBA; bunjeecorp? or hydra? or both? not entirely sure
Movement V:
=== WIthin post-canon materials ===
TBA
=== Within dubiously-canon materials ===
TBA
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area).
# [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it.
=== Laws ===
# All laws of the Vast Space also apply to the Uncharted Space whenever possible.
# There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next.
# The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned.
== Trivia ==
* As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream.
* The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone.
** The first Zone was the [[Calamity Zone]], which is now of dubious canon.
== Related pages ==
* [[Calamity Zone]]
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
ed44868848f83a6d358221cde5bff96e6e8cbdf6
696
653
2023-05-27T01:30:52Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Uncharted Space|header1=Creation and development|label2=Development|data2=TBA|label3=Creator(s)|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Uncharted Zone|label6=Guardian(s)|data6=None}}
The '''Uncharted Space''', originally referred to as the '''Uncharted Zone''', is a [[Space]] contained within [[Vast Space]]. There is no [[major deity]] associated with it.
== Creation and development ==
In October of 2021, [[BEELETH]] had a dream in which they explored a then-non-existent character universe referred to as the Uncharted Zone. The basis of what they could remember of the dream's plot ended up becoming part of a new Space's lore.
== In-universe history ==
The Uncharted Space is presumably a byproduct of [[Origin]]'s existence, as most things in the entirety of the Vast Space can be traced back to him. It was formed over time out of loose [[ichor]] into a distinct universe that is subject to several inexplicable rules (as most Spaces are).
=== Early history ===
The first parts of the Uncharted Space to take form in the [[Light Side]] are in [[Auophilon]], the former home of the Auophian people; it was situated on a peninsula surrounded by the Grand Ocean on three sides, and an unnamed forest on the other side. Guardians of elements and ideas, the [[Auophian pantheon]], made their first physical appearances around this time. As Auophilon developed, [[kineticism]] also became more prevalent. Though it was initially feared, it came to be known as generally good and allowed for communication with and rituals in honor of the deities the Auophian people revered. The only form of kineticm that was outright forbidden out of fear of misuse was [[alchemy]], which was practiced by some in secret.
Some Auophians left their homeland in search of new land and resources, and the first long-term establishment became [[Citadelonia]]. Due to the immense distance between these [[locations]], communication was not feasible and Auophilon was slowly forgotten by those who left it.
==== Founding of Citadelonia ====
Citadelonia, the walled kingdom, was founded by (TBN); in its early days, it was simply known as Citadelon in honor of Auophilon.
==== Establishment of settlements in, on, and beyond the Grand Ocean ====
TBA: [[Skystone]], [[Terahaven]], [[Blackshore]]
==== Destruction of Auophilon ====
TBA
==== Founding of Old Pokopoko, Mudwater, and Gorgondel ====
TBA
==== Technologization of Old Pokopoko and Gorgondel ====
TBA, remember to address space travel, the dark side, and intercity connection
=== Within official materials ===
Most events in the Uncharted Space beyond this point are are chronicled through each [[Movement]].
==== ''Movement I: Heavenly Beast'' ====
{{Hatnote|Also see the dedicated page for [[Heavenly Beast]].}}
TBA; royal knights find and slay the heaven dragon, several locations are introduced and established
==== ''Movement II: A Wicked Storm Comes'' ====
{{Hatnote|Also see the dedicated page for [[A Wicked Storm Comes]].}}
TBA; introduction of the grand ocean and its inhabitants, possibly related to a deity or rus or something idk
==== ''Movement III: Repentance Fugue'' ====
{{Hatnote|Also see the dedicated page for [[Repentance Fugue]].}}
TBA; qhephion?
==== ''Movement IV: On a Scale From 1 to 10'' ====
{{Hatnote|Also see the dedicated page for [[On a Scale From 1 to 10]].}}
TBA; bunjeecorp? or hydra? or both? not entirely sure
Movement V:
=== WIthin post-canon materials ===
TBA
=== Within dubiously-canon materials ===
TBA
== Spatial characteristics ==
As do all Spaces, Uncharted Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Uncharted Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# [[Souls]] are a very prominent part of the Uncharted Space for a variety of reasons (depending on the area).
# [[Kineticism]] is much more prevalent here than in other parts of Vast Space, and it is more common to know some form of it, or at least to be capable of learning it.
=== Laws ===
# All laws of the Vast Space also apply to the Uncharted Space whenever possible.
# There is a "known world" (Light Side) and an "unknown world" (Dark Side). The Light Side is continuously expanding, but there isn't a consistently proven way to speed it up or slow it down, let alone know which direction it will majorly expand in next.
# The Dark Side is unsafe to enter or be near. There have been attempts to enter and explore it, but no adventurers are known to have returned.
== Trivia ==
* As of January 2023, the Uncharted Space is the largest thing in the Vast Space to have been inspired by a dream.
* The Uncharted Space is the second subsection of Vast Space to have ever been referred to as a Zone.
** The first Zone was the [[Calamity Zone]], which is now of dubious canon.
== Related pages ==
* [[Calamity Zone]]
[[Category:Uncharted Space]]
[[Category:Spaces]]
[[Category:Stubs]]
faa908a28134f5b2bd1296db6f8f1b255be3d51e
Halberd (character)
0
166
655
607
2023-04-27T20:57:28Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}
{{Hatnote|Not to be confused with [[BEELETH]].}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
===Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
*Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
==Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Gallery==
{{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}}
===Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
===Reference images ===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
**These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
===Name origin ===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
3984c817f763483b4d0faadb7a728e439ed94a5f
668
655
2023-05-25T18:18:57Z
BEELETH
2
Updated to use "non-canon" template
wikitext
text/x-wiki
{{Noncanon}}
{{Hatnote|Not to be confused with [[BEELETH]].}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
== Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Gallery==
{{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}}
===Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
===Reference images===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
===Name origin===
Halberds are a type of weapon, and BEEL likes weapon names. Freezerays are also weapons.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages ==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
25c6b520db76c36ccb1820d097e38403813cb4bb
673
668
2023-05-25T18:23:56Z
BEELETH
2
wikitext
text/x-wiki
{{Noncanon}}
{{Hatnote|Not to be confused with [[BEELETH]].}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
== Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Gallery==
{{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}}
===Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
===Reference images===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
===Name origin===
Halberds are a type of weapon, and BEEL likes weapon names.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages ==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
7544d2e1df15a0b20e4696e395057599eb298894
676
673
2023-05-25T22:32:33Z
BEELETH
2
fixed format + templates
wikitext
text/x-wiki
{{Hatnote|Not to be confused with [[BEELETH]].}}{{Noncanon}}{{Infobox|above=Halberd|image=[[File:Halwhite.png|200px|alt=Halberd with white hair]]|header1=Creation and development|data2=* December 2022 (created)
* January 2023 (reworked)|label2=Development|label3=Creator(s)|data3=* [[BEELETH]] (creator/designer)|header4=Character information|label5=Other names|data5=* Al
* Hal
* Halb
* Halby|label6=Genders and labels|data6=Epicene, intersex, bear|label7=Pronouns|data7=* he/him
* they/them
* it/its
* no pronouns|label8=Orientation|data8=Autosexual, aromantic, polyamorous|label9=Species|data9=[[Human]]|header10=Extra information|label11=Theme song|data11=TBA|label12=Playlist|data12=[https://open.spotify.com/playlist/5ZVrllS0n15MCmSZ0qJf0t?si=b40ca94dd3e34f88&pt=fc30da4688f9192a670a558b314814d3 Spotify playlist]|label13=Offsite links|data13=* [https://toyhou.se/19723181.halberd Toyhouse]}}'''Halberd''' (occasionally called '''Halberd White''') is one of [[BEELETH]]'s [[sonas]] as well as an idealistic representation of their future self. He began notably being used to represent BEEL around January of 2023, but had existed for some time before then.
He is not canon to [[Vast Space]].
==Personality==
[[File:Halbleh.png|alt=Halberd striking a shy, clumsy, light-hearted pose, heavily referencing a popular image of an anime girl doing the same..|left|thumb|165x165px|Hal being silly]]
As a character, Halberd's personality is nearly identical to the real BEELETH's personality, albeit a little more exaggerated. He is quite smug and enjoys the company of his friends; he's also not very wise, despite his higher-than-average education, and makes many poor decisions. He tends to laugh off his mistakes. Also, he is generally unlucky.
He has the tendency to do things most consider evil. This doesn't mean he himself is evil, but rather just means he does not follow certain rules that are placed out for him. Occasionally, he laughs evilly if he gets something he wants against all odds, but his laughter is generally innocent and silly.
Despite his confidence, he's usually shy when away from his friends or things that comfort him; he tends to remain silent unless spoken to in these situations. He has an aversion to cars, vacuums, and yelling.
==Appearance==
By default, he is typically portrayed as a short, heavyset [[human]] man with downturned, half-lidded eyes. His upper eyelashes are drawn as one thick line along the top of his eyes, and his lower lashes are 3 lines that point outward to the sides of his head. He has eyebags which are slightly darker than his pale-ish skin. He can be drawn with light freckles on his cheekbones, but this isn't usually part of his design for simplicity's sake; they're not really too noticeable, anyway.
His fluffy hair is often past his shoulders and is best described as a half-up man bun with bangs that are affectionately referred to as his "anime girl hair vents"; his hairstyle can be longer, shorter, styled differently, or just down entirely, but tends to always be in the same length and style in official artwork.
=== Other design notes===
Halberd is allowed to be portrayed in any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
*His hair color is usually white (dyed), but can be brown/black (his natural hair color) or something in between. His facial hair is optional but he canonically tends to grow it out somewhat in order to "look at least a little more professional and less dumb".
*He is almost never seen wearing short-sleeved clothing because he is a little self-conscious about his upper arms. Shorts, on the other hand, are fine.
**Despite this, he still wears t-shirts on occasion. This is usually when he is around friends or at home.
**As long as he isn't doing a lot of walking, he's fine with shorter shorts too.
* Halberd was AFAB, but has an intersex condition; he also does not bind or plan on getting any gender-related surgeries because he is almost entirely comfortable with his appearance as-is.
*In his beige coat design, he wears a baggy, brown turtleneck sweater, black pants, and black dress shoes. His belt has a light gold- or silver-colored buckle (depending on the artist's tastes), and he wears a pendant of Beleth's sigil around his neck (though it is often simplified as several circles and lacks the symbol). The side of his coat with the holes also has buttons on the collar that display the autosexual, intersex, and epicene flags respectively, the latter of which being the design BEEL created for themselves.
*His eye color is brown.
== Creation and development==
[[File:Men.png|alt=A cartoony, low-quality drawing of Halberd staring vacantly into the distance. In a floating thought bubble coming from his head is the text "Men (heart symbol)" followed by "and women" in smaller text.|thumb|149x149px|Things have certainly changed]]
His design basis was originally created around December 2022 as a Roblox avatar. It was around January 2023 when he began to be used as a sona and developed sort of into his own character as well rather than just an ingame player model; he was given the name Halberd White when recreated in The Sims 4 some time around this (though it isn't an entirely canon name).
His original design was taller and more muscular, but was changed shortly afterwards to more closely resemble BEELETH's body type and height. He was also given an alternate design with brown hair to more closely resemble them.
In February 2023, he began being drawn with a more simple, shape-y design on occasion.
==Abilities==
Halberd is obviously an average human, but can be portrayed with certain abilities as jokes or as means of expressing certain ideas. These abilities are not to be taken entirely seriously.
#'''Becoming/being something else:''' Hal has been drawn as non-humans in the past.
#*He has been drawn in a [[werewolf]] form jokingly called "Howlberd". His fur color matches his hair color, but his eyes are an orangey-yellow color rather than brown.
#*As well as this, he has been drawn as a [[cute cat]] as a joke.
#'''Eating an entire can of Vienna sausages and drinking all of the broth in 20 seconds:''' Dear God.
==Gallery==
{{Hatnote|[[Halberd_(character)/Gallery|Click here to see Halberd's full gallery.]]}}
===Recognized palettes ===
<gallery>
File:Halwhite.png|"White hair" palette
File:Halbrown.png|"Brown hair" palette
</gallery>
===Reference images===
TBA
==Trivia==
*His appearance resembles the headcanoned or real appearances of several people/characters that BEELETH and their friends joke about or are aware of, and he is jokingly called their names on occasion.
** These include Dr. Glenn Pierce, Roger Waters, and J. Higgs among many other older-looking and/or older-sounding men.
**A joke related to this is based on the Cosmo yelling meme, in which he is compared to Dr. Glenn Pierce from ''Superliminal'' but is falsely corrected as being named "Super Liminal" rather than having his true name.
*BEELETH's real-life fashion sense actually varies greatly from what Halberd is typically depicted wearing.
===Name origin===
Halberds are a type of weapon, and BEEL likes weapon names.
White as a surname is a reference to a voice line from Toontown Online spoken by Nurse Sharks; when caught, the sharks say "Dr. White, telephone please," and as Hal is often compared to Dr. Glenn Pierce, the last name White is used for him as a character on occasion. However, he is not really a doctor.
==Related pages ==
*[[BEELETH]], Hal's real-world counterpart
*[[BEELETH's sona]], another representation of BEELETH
[[Category:Sonas]]
[[Category:Characters]]
[[Category:LGBT+ characters]]
[[Category:Non-canon]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
[[Category:Stubs]]
28f50d8413ddf1b49edc3923d6b1b972e5834640
BEELETH
0
149
656
610
2023-05-18T21:00:20Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|text=This [[non-canon]] page of a [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}<small>''Not to be confused with [[Halberd (character)|Halberd]] or [[Beeleth]].''</small>
'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
[[Category:Humans]]
c6fe18905c2de386d6d452f74f0e8812942af52a
680
656
2023-05-25T23:09:30Z
BEELETH
2
wikitext
text/x-wiki
{{Realperson}}{{Hatnote|Not to be confused with [[Beeleth]] or [[Halberd]].}}{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
[[Category:Humans]]
c7b4ba7ce4cc979615d48220f9c6b8acc6bf730e
681
680
2023-05-25T23:09:55Z
BEELETH
2
wikitext
text/x-wiki
{{Hatnote|Not to be confused with [[Beeleth]] or [[Halberd]].}}{{Realperson}}
{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* they/them
* he/him
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear, androgyne|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=TBA}}'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the Vast Space, and is the main contributor to its lore and canon. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with they/them for consistency.
== Contributions to Vast Space ==
=== General categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
=== Specific ===
* Creator of the [[Vast Space]] and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as their characters.
* [https://beeleth.carrd.co/ Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord]
* [https://www.roblox.com/users/30627566/profile Roblox]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a sona on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
[[Category:Humans]]
3689daf6afc64ea1a9fe3d87acbb64211f30596c
Halberd White
0
329
657
2023-05-18T21:01:34Z
BEELETH
2
Redirected page to [[Halberd (character)]]
wikitext
text/x-wiki
#REDIRECT [[Halberd (character)]]
5e902739d24145f68919d8abf3e238aeeddd2b5f
Halberd Aswang
0
330
658
2023-05-18T21:02:08Z
BEELETH
2
Redirected page to [[BEELETH]]
wikitext
text/x-wiki
#REDIRECT [[BEELETH]]
9f55d880f723ab38e660baa68964e7484ce01ae9
Category:Drakes
14
331
663
2023-05-23T20:50:30Z
BEELETH
2
Created page with "A list of [[drakes]] throughout [[Vast Space]]. In the [[Uncharted Space]], drakes are a type of wingless, reptilian [[beastman]] that is included in the [[draconic hierarchy]], generally as royal attendants and soldiers to [[dragons]]. This definition may vary in other parts of Vast Space."
wikitext
text/x-wiki
A list of [[drakes]] throughout [[Vast Space]].
In the [[Uncharted Space]], drakes are a type of wingless, reptilian [[beastman]] that is included in the [[draconic hierarchy]], generally as royal attendants and soldiers to [[dragons]].
This definition may vary in other parts of Vast Space.
0daefbc3f364f879267b0b73cba34b735e577d3a
664
663
2023-05-23T20:51:34Z
BEELETH
2
wikitext
text/x-wiki
A list of [[drakes]] throughout [[Vast Space]].
In the [[Uncharted Space]], drakes are a type of wingless, reptilian [[beastman]] that is included in the [[draconic hierarchy]], generally as royal attendants and soldiers to [[dragons]].
This definition may vary in other parts of Vast Space.
[[Category:Beastmen]]
[[Category:Draconic hierarchy]]
cea9bf7d0549db8db3b2cc4e5389151f9722e066
Anvil
0
310
665
608
2023-05-23T22:08:08Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Anvil|caption=Design as of 2022|image=[[File:Placeholder.png|200px|Placeholder]]|header1=Creation and development|label2=Development|data2=* June 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|data6=* Cursed Knight of Endless Ruin
* Anvil
* Ruin|label6=Other names|label7=Genders and labels|data7=Unconfirmed gender (neutral)|label8=Pronouns|data8=* he/him
* she/her
* they/them (occasionally)|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Beastman]] ([[drake]])|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb.
Though Anvil uses multiple sets of pronouns, this article solely refers to him with he/him pronouns for consistency purposes.
== Personality ==
He is initially introduced as a heartless, villainous knight. If someone was weaker than him, he would either consider them prey or totally disregard them.
=== Post- ===
After his defeat, he is portrayed more like a kind but strong protector.
TBA
== Appearance ==
Anvil has multiple forms.
=== Normal form ===
In normal situations, Anvil appears as a [[drake]] with medium-length white fur. His fur is longer around his neck, along his goat-like ears, and the end of his long, reptilian tail. He has two golden horns on either side of his head; they are slightly bent into an L-like shape. His eyes are typically colored as red or green, though this is purely for situational aesthetics.
Parts of his soul may be externally exposed, particularly from the sides and back of his neck as well as on the outer-facing sides of each of his paws. It appears as glowy, green, and fire-like, but it is generally safe to touch for those who do not have weak or exposed souls (as stronger souls resist the natural pull). The intensity, color, heat, glow, and size are partially controllable and may also be influenced by the amount of power Anvil has in a given moment.
His signature iron armor does not cover his entire body, but instead just his upper half save for his paws. He may, on occasion, don a helmet that obscures nearly his entire face aside from a pair of glowing eyes and sharp teeth. The sides of his helmet are horned, and the top has a candle with a flame that matches the color of his soul.
==== Other design notes ====
He can be portrayed in any palette as well as with some variation of his armor (if any), but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* By default, he is drawn with the colors described above. However, he has been portrayed with a pink palette and a "kaiju" palette.
* A younger design of his normal form was created at some point. In this design, he walks on all four paws and lacks an externally exposed soul. His eyes are drawn simper and his horns are shorter and do not bend.
* The pads on each of his paws are optional to draw.
* His lower paws are to always be portrayed as paws (or at least stumps in more stylized or "cute" art), but his upper paws can be portrayed as fin-like, paw-like, or finger-like (in a stubby way to not be too uncanny). His hand claws are optional, but must be implied by the shape or details of his paws.
=== Bestial form ===
When Anvil absorbs lots of souls/energy or enters a rage state, he takes on a more monstrous version of his normal form.
==== Other design notes ====
* TBA
== Creation and development ==
Anvil was originally created by [[BEELETH]] in Robloxian High School early in June 2022 as a helmet-wearing beast knight with countless arms and flames emerging from various parts of his body.
== In-universe history ==
TBA
== Abilities ==
Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and potential partially derived from his curse.
# '''Manipulating his soul as well as others' souls:''' TBA
# '''Wielding the Golden Hammer of Endless Ruin:''' TBA
# '''Using immense physical strength:''' TBA
# '''Using various forms of kineticism:''' TBA
#* Pyrokineticism
#* Alchemy
#
== Gallery ==
''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>''
===Recognized palettes===
TBA
===Reference images===
TBA
== Trivia ==
* Despite originally being created with a helmet, it almost never appears in any portrayal of Anvil in any media.
=== Name origin ===
Anvil derives his name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer.
== Related pages ==
* [[Forge]], another beastman with a similar name
* [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight
[[Category:Beastmen]]
[[Category:Uncharted Space]]
[[Category:Stubs]]
[[Category:Characters]]
[[Category:Drakes]]
e1db899221c52b2c5aa72c2c8f1a39dc57aaed2e
688
665
2023-05-26T23:11:37Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Anvil|caption=Default design as of 2022|image=[[File:Anvil2.png|200px|Default Anvil]]|header1=Creation and development|label2=Development|data2=* June 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|data6=* Cursed Knight of Endless Ruin
* Anvil
* Ruin|label6=Other names|label7=Genders and labels|data7=Unconfirmed gender (neutral)|label8=Pronouns|data8=* he/him
* she/her
* they/them (occasionally)|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Beastman]] ([[drake]])|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb.
Though Anvil uses multiple sets of pronouns, this article solely refers to him with he/him pronouns for consistency purposes.
== Personality ==
He is initially introduced as a heartless, villainous knight. If someone was weaker than him, he would either consider them prey or totally disregard them.
=== section ===
After his defeat, he is portrayed more like a kind but strong protector.
TBA
== Appearance ==
Anvil has multiple forms.
=== Normal form ===
In normal situations, Anvil appears as a [[drake]] with medium-length white fur. His fur is longer around his neck, along his goat-like ears, and the end of his long, reptilian tail. He has two golden horns on either side of his head; they are slightly bent into an L-like shape. His eyes are typically colored as red or green, though this is purely for situational aesthetics.
Parts of his soul may be externally exposed, particularly from the sides and back of his neck as well as on the outer-facing sides of each of his paws. It appears as glowy, green, and fire-like, but it is generally safe to touch for those who do not have weak or exposed souls (as stronger souls resist the natural pull). The intensity, color, heat, glow, and size are partially controllable and may also be influenced by the amount of power Anvil has in a given moment.
His signature iron armor does not cover his entire body, but instead just his upper half save for his paws. He may, on occasion, don a helmet that obscures nearly his entire face aside from a pair of glowing eyes and sharp teeth. The sides of his helmet are horned, and the top has a candle with a flame that matches the color of his soul.
==== Other design notes ====
He can be portrayed in any palette as well as with some variation of his armor (if any), but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* By default, he is drawn with the colors described above. However, he has been portrayed with a pink palette and a "kaiju" palette.
* A younger design of his normal form was created at some point. In this design, he walks on all four paws and lacks an externally exposed soul. His eyes are drawn simper and his horns are shorter and do not bend.
* The pads on each of his paws are optional to draw.
* His lower paws are to always be portrayed as paws (or at least stumps in more stylized or "cute" art), but his upper paws can be portrayed as fin-like, paw-like, or finger-like (in a stubby way to not be too uncanny). His hand claws are optional, but must be implied by the shape or details of his paws.
=== Bestial form ===
When Anvil absorbs lots of souls/energy or enters a rage state, he takes on a more monstrous version of his normal form.
==== Other design notes ====
* TBA
== Creation and development ==
Anvil was originally created by [[BEELETH]] in Robloxian High School early in June 2022 as a helmet-wearing beast knight with countless arms and flames emerging from various parts of his body.
== In-universe history ==
TBA
== Abilities ==
Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and potential partially derived from his curse.
# '''Manipulating his soul as well as others' souls:''' TBA
# '''Wielding the Golden Hammer of Endless Ruin:''' TBA
# '''Using immense physical strength:''' TBA
# '''Using various forms of kineticism:''' TBA
#* Pyrokineticism
#* Alchemy
#
== Gallery ==
''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>''
note to self: do something about condensing this while also including all forms, palettes, and variants
===Recognized palettes===
<gallery>
File:Anvil2.png|"Default" palette
</gallery>
===Reference images===
TBA
=== Free bases ===
<gallery caption="Commercial use of these bases or any derivatives is prohibited. Please do not remove the watermarks.">
File:Anvil1base.png|Without fire
File:Anvil2base.png|With fire
</gallery>
== Trivia ==
* Despite originally being created with a helmet, it almost never appears in any portrayal of Anvil in any media.
=== Name origin ===
Anvil derives his name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer.
== Related pages ==
* [[Forge]], another beastman with a similar name
* [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight
[[Category:Beastmen]]
[[Category:Uncharted Space]]
[[Category:Stubs]]
[[Category:Characters]]
[[Category:Drakes]]
e0815df5e4b7b147966c12d698b00cb076f3b405
Template:Noncanon
10
332
666
2023-05-25T18:16:24Z
BEELETH
2
Created page with "{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}"
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}
ccca1e1fdce3e1a9d82ce14f9552e41ead0808cc
667
666
2023-05-25T18:18:26Z
BEELETH
2
Added category
wikitext
text/x-wiki
<noinclude>{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}</noinclude>
<includeonly>[[Category:Non-canon]]</includeonly>
9abaf364e1f464bb9824700b715dad192d1385c1
669
667
2023-05-25T18:20:34Z
BEELETH
2
fix?
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}[[Category:Non-canon]]
834097652fd4dbcf02f28633f3aebfcd1c062afb
670
669
2023-05-25T18:21:29Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This <includeonly>[[non-canon]]</includeonly> page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}
6f6a51941e1a9734e63c6ef6d4ceafc4e36e80f3
671
670
2023-05-25T18:21:53Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This <noinclude>[[non-canon]]</noinclude> page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}
78ab555566cc19c8a792d69c5206ff8aa43a436f
672
671
2023-05-25T18:23:13Z
BEELETH
2
fix???
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=This [[Category:Non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}
88d8c2ca9f0b7f752e73c32626fa360c4f093feb
675
672
2023-05-25T22:30:21Z
BEELETH
2
wikitext
text/x-wiki
{{Mbox|name=noncanon|text=[[Category:Non-canon]]This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}
288c0cd68482b572e401542cb5dc0673bbd1f0b3
677
675
2023-05-25T22:33:11Z
BEELETH
2
wikitext
text/x-wiki
<br>{{Mbox|name=noncanon|text=[[Category:Non-canon]]This [[non-canon]] page exists on the wiki because its contents are tied in some way to a creator (or otherwise notable person) within the [[Vast Space]]'s real-world community and is notable enough to be listed here.}}<br>
0c28a0a588d20ec17f140ce6d786fd1a0ef11bf2
Origin
0
295
674
611
2023-05-25T22:28:28Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created)
* January 2023 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin
* Rykha'uophi-konu}}
'''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity.
It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is.
== Personality ==
It is hard to discern what kind of personality Origin has, as he is too large and powerful to be accessibly interacted with by most individuals, let alone comprehended.
=== Voice ===
Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once.
== Appearance ==
By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent.
A star-like object known as the [[Origin point]] floats above his head between his antlers.
=== Biology and physical function ===
Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power.
The function of each of his organs is not entirely known, but they can all be observed from outside his body.
* The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him.
** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae.
* Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers.
His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have.
* His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull.
* There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them.
* They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards.
== Creation and development ==
Origin was initially created in late 2020 to be a sort of "higher power" over the other deities.
He was later redesigned and rewritten in early 2023.
== In-universe history ==
It can be assumed that Origin was either created at the same time as the Vast Space or he predates it
== Abilities ==
# '''Being immortal:''' TBA
# '''Generating ichor:''' Many greater deities have the ability to generate ichor, and Origin, for the most part, is no different. The only difference is that he is the source of two types of unique ichors, each with special abilities that most other ichors cannot recreate.
#* '''Origin ichor''' is the most plentiful type of ichor produced by Origin, and is considered to be the more important type; without it, Origin would likely be the only thing to exist throughout Vast Space (and even then, it's uncertain if he could function without it at all). After it is processed by his cloud-like organ system, it is later shed alongside some layers of the outermost parts of the organs to allow fresher, healthier ichor and tissue to regenerate. The byproduct will often react to its environment and transform into something new.
#* '''Godsorrow''', on the other hand, is produced at a lesser rate and serves a less definitive purpose for Origin as well as for anything around him. It has varying effects on organisms depending on how it is used or consumed. As with most types of ichor, it is poisonous so one must be careful when handling it.
#** Godsorrow has a sweet, perfume-like flavor and scent.
#** If godsorrow is spread lightly over one's eyelids and allowed to dry, it has a high chance of fatally poisoning them and a low chance of granting them the sorrowful gaze. This practice was generally only used in Auophilon for those training to become eyes as a final test in their training. It is uncertain what exactly allows one to obtain the gaze from this.
#** In alchemy,
#**
# '''Generating godskull:''' TBA
#
== Gallery ==
=== Recognized palettes ===
<gallery widths="120" heights="60">
File:Origin2.png|Default palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title.
* He is also the only deity known to produce two types of ichor.
* Despite existing prior to Abstract in canon, he was created as a character ''after'' him.
=== Name origins ===
He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it.
His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract.
== Related pages ==
* [[Vast Space]]
[[Category:Characters]]
[[Category:Vast Space]]
[[Category:Deities]]
[[Category:Greater deities]]
[[Category:Stubs]]
[[Category:Designed by BEELETH]]
[[Category:Created by BEELETH]]
d86466975628ba9c9423d0c15e67cb0f3647e962
683
674
2023-05-25T23:16:19Z
BEELETH
2
wikitext
text/x-wiki
{{Spoilerpage}}{{Infobox|above=Origin|image=[[File:Origin2.png|200px|Origin]]|header1=Creation and development|label2=Development|data2=* November 2020 (created)
* January 2023 (redesigned)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|label6=Other names|data6=* Origin
* Rykha'uophi-konu}}
'''Origin''', known as '''Rykha'uophi-konu''' by the [[Auophian]] [[eyes]], is the [[deity]] who reigns over the [[Vast Space]] as a whole. Most everything within the Vast Space can be traced back to him in some way; because of this, he is considered to be the creator of everything that did not simply will itself into existence. In relation to the [[Auophian pantheon]], he is considered the primary creation deity.
It is important to note that most other beings anywhere in the Vast Space, regardless of whether or not they are deities, are unaware of Origin's existence unless they have the [[sorrowful gaze]]. [[Abstract]] is often mistaken by those with less gazing ability to be the primary creation deity, as he also has the ability to create from [[ichor]] and is closer to all other [[Spaces]] than Origin is.
== Personality ==
It is hard to discern what kind of personality Origin has, as he is too large and powerful to be accessibly interacted with by most individuals, let alone comprehended.
=== Voice ===
Origin does not speak, but rather perpetually emits sound comparable to whalesong, humans weeping, windchimes, and metallic dragging all at once. This is commonly referred to as him "growling". In the virtually impossible scenario he is to feel threatened in any way, he will "roar", in which he will vocalize a deafening noise best described as billions of humans and creatures shrieking and crying all at once.
== Appearance ==
By default, Origin appears as an incomprehensibly large monster with characteristics somewhat comparable to a variety of animals. The majority of his body's surface is bioluminescent or reflectant to some extent.
A star-like object known as the [[Origin point]] floats above his head between his antlers.
=== Biology and physical function ===
Past the thick but almost perfectly clear membrane that protects his internal organs, [[Origin ichor]] flows freely. His innards are also able to move around to an extent, as there is not much holding them in place; in fact, he sheds his organs regularly to grow them once more. Everything he expels from his body becomes a part of space and is imbued with a fraction of his power.
The function of each of his organs is not entirely known, but they can all be observed from outside his body.
* The cloud body is large, white organ (or possibly an organ system) that can visually be compared to the trim of a fur coat, though it has cloud-like properties hence the name. It is largest around his neck-area and the lower part of his body, but trails around the front of his body along the edge between the inside and outside of his membrane. The organ is partially exposed externally, and it is constantly shedding thin layers that follow behind Origin as he moves throughout Vast Space. These layers become nebulae when they are fully separated from him.
** This can be considered a reproductive organ, as greater spatial deities have the potential to be created from nebulae.
* Throughout his body are small, pink pockets and glands full of [[godsorrow]]; this is the second type of ichor only Origin is known to produce. The two godsorrow glands at the base of his tails are where the majority of his body's godsorrow is generated, and he is able to expel it through his stingers if he chooses. Some large drops of godsorrow float around his upper cloud body, tail godskulls, and antlers.
His skeletal structure is much less intricate than his specialized organs, and he noticeably lacks a lot of the bones that organic beings often have.
* His cranial [[godskull]], unlike other Auophian deities, is completely dark. The "spine" that drapes loosely below his head is made of the same type of dark godskull.
* There are no bones in the rest of his body save for the ovular godskulls on his tails, the pincers on the tail ends, and the forseps below them.
* They are not considered to be connected to his body, but at least eight empty godskulls surround him at all times. He is able to drop them if he pleases, but he always replaces the one he discards.
== Creation and development ==
Origin was initially created in late 2020 to be a sort of "higher power" over the other deities.
He was later redesigned and rewritten in early 2023.
== In-universe history ==
It can be assumed that Origin was either created at the same time as the Vast Space or he predates it
== Abilities ==
# '''Being immortal:''' TBA
# '''Generating ichor:''' Many greater deities have the ability to generate ichor, and Origin, for the most part, is no different. The only difference is that he is the source of two types of unique ichors, each with special abilities that most other ichors cannot recreate.
#* '''Origin ichor''' is the most plentiful type of ichor produced by Origin, and is considered to be the more important type; without it, Origin would likely be the only thing to exist throughout Vast Space (and even then, it's uncertain if he could function without it at all). After it is processed by his cloud-like organ system, it is later shed alongside some layers of the outermost parts of the organs to allow fresher, healthier ichor and tissue to regenerate. The byproduct will often react to its environment and transform into something new.
#* '''Godsorrow''', on the other hand, is produced at a lesser rate and serves a less definitive purpose for Origin as well as for anything around him. It has varying effects on organisms depending on how it is used or consumed. As with most types of ichor, it is poisonous so one must be careful when handling it.
#** Godsorrow has a sweet, perfume-like flavor and scent.
#** If godsorrow is spread lightly over one's eyelids and allowed to dry, it has a high chance of fatally poisoning them and a low chance of granting them the sorrowful gaze. This practice was generally only used in Auophilon for those training to become eyes as a final test in their training. It is uncertain what exactly allows one to obtain the gaze from this.
#** In alchemy,
#**
# '''Generating godskull:''' TBA
#
== Gallery ==
=== Recognized palettes ===
<gallery widths="120" heights="60">
File:Origin2.png|Default palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* Origin is the only deity to reign over a Space that does not contain its associated deity's name in its title.
* He is also the only deity known to produce two types of ichor.
* Despite existing prior to Abstract in canon, he was created as a character ''after'' him.
=== Name origins ===
He is often referred to as Origin because he was the first being to exist in the Vast Space and likely created it.
His Auophian name, Rykha'uophi-konu, can be translated from the Auophian language as "the cherished blooming-one beyond us". Rykhaa means "cherished", and as it is followed by another "a" sound, it is combined into an "a-stop". Auophi can be interpreted as "blooming-one" but is generally left untranslated in most contexts as it is the civilization's name, and a more accurate, albeit rougher, translation of the word would be "person of flowers". The Auophian deities are often referred to as fellow Auophian people, albeit with a higher rank and higher reverance. The -konu suffix is an honorific reserved only for certain deities that reside beyond [[Light side|the known world]], and Origin shares this honorific with Abstract.
== Related pages ==
* [[Vast Space]]
[[Category:Characters]]
[[Category:Vast Space]]
[[Category:Deities]]
[[Category:Greater deities]]
[[Category:Stubs]]
[[Category:Designed by BEELETH]]
[[Category:Created by BEELETH]]
b3f79d073d2cc6b9f7e7a2e0b8d74cd3bc02beef
Template:Realperson
10
333
678
2023-05-25T23:07:06Z
BEELETH
2
Created page with "<br>{{Mbox|text=This [[Category:Non-canon]] [[non-canon]] page of a [[Category:Real people]][[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}<br>"
wikitext
text/x-wiki
<br>{{Mbox|text=This [[Category:Non-canon]] [[non-canon]] page of a [[Category:Real people]][[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}<br>
d7c6f7f9203937603f32ff2bb66ef38149a7fa7f
679
678
2023-05-25T23:07:20Z
BEELETH
2
wikitext
text/x-wiki
<br>{{Mbox|text=This [[Category:Non-canon]] [[non-canon]] page of a [[Category:Real people]] [[real person]] exists on the wiki because this person is a community member, content creator, and/or important person in the [[Vast Space]]'s real-world community. Please be respectful when editing this page.|name=realperson}}<br>
aa240770ee836cd0914f04516a80b4214531d9ba
Template:Spoilerpage
10
334
682
2023-05-25T23:14:27Z
BEELETH
2
Created page with "<br>{{Mbox|text=This page contains unmarked [[spoilers]] for content in [[Vast Space]]. If this is unwanted, please leave this page.|name=spoilers}}<br>"
wikitext
text/x-wiki
<br>{{Mbox|text=This page contains unmarked [[spoilers]] for content in [[Vast Space]]. If this is unwanted, please leave this page.|name=spoilers}}<br>
59111d4edcd00fdce276eeef7156036878afb056
File:Anvil2.png
6
335
684
2023-05-26T22:38:56Z
BEELETH
2
Uploaded own work with UploadWizard
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{clc|1=help why is this description marked as chilcotin}}
|date=2023-05-26
|source={{own}}
|author=[[User:BEELETH|BEELETH]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
fa0b40ae19e181a45a54247be1e905b4a505ac13
File:Anvil1base.png
6
336
685
2023-05-26T22:38:56Z
BEELETH
2
Uploaded own work with UploadWizard
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{clc|1=help why is this description marked as chilcotin}}
|date=2023-05-26
|source={{own}}
|author=[[User:BEELETH|BEELETH]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
fa0b40ae19e181a45a54247be1e905b4a505ac13
699
685
2023-05-29T18:30:53Z
BEELETH
2
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{clc|1=help why is this description marked as chilcotin}}
|date=2023-05-26
|source={{own}}
|author=[[User:BEELETH|BEELETH]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Bases]]
[[Category:Art by BEELETH]]
9b2c61c224f9ab2a02165fa40880c61b4e912f68
File:Anvil1.png
6
337
686
2023-05-26T22:38:58Z
BEELETH
2
Uploaded own work with UploadWizard
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{clc|1=help why is this description marked as chilcotin}}
|date=2023-05-26
|source={{own}}
|author=[[User:BEELETH|BEELETH]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
fa0b40ae19e181a45a54247be1e905b4a505ac13
File:Anvil2base.png
6
338
687
2023-05-26T22:38:59Z
BEELETH
2
Uploaded own work with UploadWizard
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{clc|1=help why is this description marked as chilcotin}}
|date=2023-05-26
|source={{own}}
|author=[[User:BEELETH|BEELETH]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
fa0b40ae19e181a45a54247be1e905b4a505ac13
700
687
2023-05-29T18:31:26Z
BEELETH
2
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{clc|1=help why is this description marked as chilcotin}}
|date=2023-05-26
|source={{own}}
|author=[[User:BEELETH|BEELETH]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Bases]]
[[Category:Art by BEELETH]]
9b2c61c224f9ab2a02165fa40880c61b4e912f68
Drake
0
339
689
2023-05-26T23:12:11Z
BEELETH
2
Redirected page to [[Drakes]]
wikitext
text/x-wiki
#REDIRECT [[Drakes]]
4733e2d7711174fac0b3b07995b4c993449c6d02
Template:Stub
10
102
690
203
2023-05-26T23:17:49Z
BEELETH
2
wikitext
text/x-wiki
<br>{{Mbox|text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''|class = notice hidden plainlinks|id = stub
}}<br><includeonly>[[Category:Stubs]]</includeonly><noinclude>
{{Documentation}}</noinclude>
b6eaf8615ff1fc56bbc70153db338adefd1b6971
692
690
2023-05-26T23:19:07Z
BEELETH
2
wikitext
text/x-wiki
<br>{{Mbox|text = ''This article is a [[:Category:Stubs|stub]]. You can help our wiki by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''|name=stub
}}<br><includeonly>[[Category:Stubs]]</includeonly><noinclude>
{{Documentation}}</noinclude>
27c8f196247671b66c537933d4fff02219714d9d
693
692
2023-05-26T23:19:48Z
BEELETH
2
wikitext
text/x-wiki
<br>{{Mbox|text = ''This article is a [[:Category:Stubs|stub]]. Please consider helping our wiki by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].''|name=stub
}}<br><includeonly>[[Category:Stubs]]</includeonly><noinclude>
{{Documentation}}</noinclude>
2e61138270f564ae5e463c45e5d9b0581a29a671
Vast Space
0
247
691
568
2023-05-26T23:17:57Z
BEELETH
2
wikitext
text/x-wiki
{{Hatnote|Did you mean the [[BEELETH_Wiki|main page]]?}}{{Stub}}{{Infobox|above=Vast Space|header1=Creation and development|label2=Development|label3=Creator(s)|data2=Unknown|data3=* [[BEELETH]] (creator)|header4=Space information|label5=Other names|data5=* Beelethverse
* The Multiverse
* Everything|label6=Guardian(s)|data6=* [[Origin]] (creator/deity)
* [[Cosmic Warden]] (protector)|label7=Sub-Spaces, universes, and timelines|data7=* [[Abstract Space]]
* [[Sender Space]]
* [[Uncharted Space]]
* [[Anomaly Space]]
* [[World's End Timeline]]
* Several smaller, obscure Spaces}}
'''Vast Space''' (also occasionally called the '''Beelethverse''' outside of canon materials) is the place in which all canon or theoretical events occur in [[BEELETH]]'s shared character multiverse. It is overseen by [[Origin]] and at least one [[Cosmic Warden]]; this [[Space]] is split into several smaller Spaces with their own [[deities]], sub-properties, and/or sub-laws.
== Creation and development ==
The Vast Space has existed for as long as the character universe had been split into smaller Spaces, but was not given a name nor recognized for several years.
== In-universe history ==
It is uncertain when the Vast Space was created, but for as long as it has existed, Origin has protected it.
== Spatial characteristics ==
As do all Spaces, Vast Space follows several laws and has certain traits that affect most if not all possibilities, events, objects, and creatures within it. Everything within Vast Space must follow the defined spatial laws or else it just does not exist. Traits, on the other hand, are just certain qualities that pop up frequently in certain parts of the Space but are not always present.
=== Traits ===
# Not all of the Vast Space's sub-Spaces need to be created by a deity or an event; some are just naturally created.
# Most Spaces and their contained universes have preset outcomes ("timelines"), but if they do not, it is likely the result of a [[spatial anomaly]] of some sort.
#* [[World's End Timeline]] is a "Schrodinger's timeline" where [[Sir Ves]]' [[parasite]] gains the means to rewrite the entirety of Vast Space into a single, ruined version that combines a handful of Space elements that survive the event.
#* Galfleet Heaven was originally intended to have two outcomes as a result of Volta, who was created as an angel-like villain at the time rather than as a soul-based entity as it exists in the Uncharted Space.
# Spaces and their contained universes tend to constantly be occurring in the past, present, and future; they are endlessly "playing", "rewinding", and are also "paused". Time exists incomprehensibly across them and happens at what feels like its own convenience.
# Most Spaces and their contained universes are unable to communicate across one another, but there have been exceptions resulting from spatial anomalies or certain natural conditions.
# Humans usually exist at some point in each universe, but this is not always the case.
=== Laws ===
# Nothing is allowed to exist beyond Vast Space unless it is even more incomprehensibly vast or powerful. This is almost certainly impossible.
#* Semi-canon crossovers are permitted if the other universe(s) are explained as being obscure, alternate timelines that diverge at the very beginning of the Vast Space's existence.
# All worlds contained in the Vast Space must have the [[Great Gobbler]] and his most notable historical event present in some way.
#* He does not have to be human.
# The [[Auophian pantheon]], best described as the descendants of Origin, naturally have higher precedence over most other deities.
#* Amongst themselves, Origin is the highest-ranked deity, with Abstract second to him. The rest of the pantheon is ranked below Abstract and are equal to one another unless they are demigods, in which they are ranked below them but above average people.
#* Abstract is the highest-ranked deity of a sub-Space. The rest of the pantheon are the highest-ranked deities within any universe.
# Logical/literal memories are stored in minds, and emotional/implied memories are stored in souls. Logical people have stronger minds, and emotional people have stronger souls.
# Living things, regardless of whether they are organic or artificial, normally have minds. Souls, on the other hand, only naturally occur in organic living things.
# Loose souls will usually gravitate towards empty or partial vessels, or they will gravitate towards more powerful souls in order to fuse with them. In the event a soul fuses,
== Trivia ==
* The Vast Space is the only deity-protected Space whose name does not reflect that of its associated deity.
== Related pages ==
TBA
[[Category:Vast Space]]
[[Category:Spaces]]
7e78ee5ef9327570199a83da528b7508160b1004
File:Pokopoko.png
6
340
694
2023-05-26T23:28:05Z
BEELETH
2
An unfinished May 2023 drawing by BEELETH of the cityscape of New Pokopoko at night.
wikitext
text/x-wiki
== Summary ==
An unfinished May 2023 drawing by BEELETH of the cityscape of New Pokopoko at night.
76c453b3fb12996fb25e7d99299bb598ae2676cd
New Pokopoko
0
286
695
618
2023-05-27T01:21:13Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=New Pokopoko|header1=Creation and development|label2=Development|data2=November 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Location information|caption=[[BEELETH]]'s concept art from May 2023|image=[[File:Pokopoko.png|200px|New Pokopoko cityscape at night]]|label5=Space|data5=[[Uncharted Space]]|label6=Region|data6=[[Light side]], main continent|label7=Districts|data7=* District 1
* District 2
* District 3
* District 4
* District 5
<b>Total population:</b> At least 1|label8=Demonym|data8=New Pokopokan|label9=Currency|data9=Eleanor (1 USD = 10 EL)}}
'''New Pokopoko''', rarely (but still known to be) referred to solely as '''Pokopoko''', is a populous, bustling city in the [[Light Side]] of the [[Uncharted Space]]. Aside from the advanced technology and countless companies, celebrities, and hotspots in its walls, the city most notably serves as the home of [[Bunjeecorp]]'s largest terrestrial headquarters. It was built over [[Old Pokopoko]].
It is the sister city of [[Gorgondel]], and the two cities share technology and business with each other. They are also two of the easiest non-adjacent [[locations]] in Uncharted Space to travel between, as intercity travel is made more convenient and accelerated with Bunjeecorp and [[HYDRA]]'s [[OPTRASYS|Optimized Transport System]]. It was originally only used for the transport of material, goods, militia, and important figures, but was later expanded to be for the general population once the infrastructure was fully expanded. It only takes about 20 to 30 minutes to travel between the cities despite their distance; however, in the extremely rare occasion of a traffic jam, travel could potentially take hours.
== Creation and development ==
Initially, New Pokopoko was created in November 2022 as a one-off location during an AI Dungeon session set in the Uncharted Space. Many locations, characters, and events from the session were used as inspiration for [[Heavenly Beast|''Heavenly Beast'']].
optimistic dystopia
== In-universe history ==
The [[location]] now known as New Pokopoko is one of the first known places in the Uncharted Space to enter the Light Side. Alchemists that were banished from [[Citadelonia]] or simply wished to practice alchemy in secret travelled northward, splitting into two similar yet distinct groups that would later found Old Pokopoko and Gorgondel.
At least five years prior to ''Heavenly Beast'', Bunjeecorp gave the opportunity to a select few New Pokopokans to become cyborgs; two of these citizens were [[C.C.]] and [[Pollyanna]].
=== ''Movement I: Heavenly Beast'' ===
Along with [[Remudon]] and [[Hypnosen]], the [[Circle of Royal Knights]] temporarily stops at New Pokopoko while hunting down the [[Heaven Dragon]]. They are personally greeted at the New Pokopoko Main Gate by [[Woolf]].
=== ''Movement II: A Wicked Storm Comes'' ===
While New Pokopoko is not a major location during ''[[A Wicked Storm Comes]]'', certain events do occur at the same time as the story.
(ill add them later im very tired of writing an article about a fictional city on and off)
== Geography ==
Before it fully developed, New Pokopoko stood atop a flat, rocky plateau with little vegetation.
=== Major areas and districts ===
TBA
==== New Pokopoko Main Gate ====
Though there are other gates to the city, the Main Gate is the most popular and well-known, accessible to those coming from the South or those who are leaving the city. It resembles a theme park's gates, and usually has greeters available to visitors at all times of the day; these greeters may be robotic, holographic, or organic. It often is not patrolled by live militia, instead being monitored by machinery and cameras unless there is an emergency of some sort.
==== Rainbow roads ====
The "rainbow roads" of New Pokopoko are the busiest streets in the city. They are heavily marketed to tourists and are often elaborately decorated, even moreso than the rest of the city's streets and buildings.
==== Orbits ====
Due to the unique architecture and technology of New Pokopoko, orbits currently exist nowhere else in the Light Side, and there are only a few in the city at all.
An orbit consists of several floating (free-floating or otherwise suspended) buildings, areas, or structures that slowly circle a larger hub platform in the center. Each of the floating platforms in the orbit may be openly accessible, or they may be sealed in a bubble-like, soundproof barrier only permeable via teleportation or other specialized transport.
Orbits are most popular with the youth, but are sometimes utilized by those who seek privacy and unique scenery.
=== Architecture ===
New Pokopoko is physically walled off from the majority of its border and also is protected by an [[New Pokopoko alchemic barrier|invisible barrier]] that can be readily configured by some Bunjeecorp officials at any time with the use of alchemy and technology combined. This barrier also serves as a screen on which special messages can be projected, or a place for advertisements to be displayed at night alongside the stars.
The walls of the city open at specific points in each cardinal direction. The Western wall is exclusively for Bunjeecorp use, as it is connected to a major terrestrial starship port overlooking the Gobu Canyon; it would be a security and safety threat if unauthorized individuals were able to freely access it. The Southern wall opens at two points, but the New Pokopoko Main Gate is the most used opening. The other southern opening is generally reserved for emergencies or for the local militia.
Generally, the architecture of New Pokopoko is sleek and modern, utilizing both straight edges and curves to achieve a futuristic look. Many buildings and landmarks are white, blue, or transparent; it also isn't unusual for them to have color-changing parts or be able to reflect light in beautiful, creative ways.
==== Transportation ====
Though it's possible for the most part to walk from place to place, a lot of areas are only accessible through certain modes of transport. For example, some buildings are suspended in mid-air and must be accessed through [[insta-jumps]]. Some places also have tubes for people or specialized equipment to shoot through quickly, but this isn't very common due to how much space that the tubes can take up; they are, however, often more cost-effective to create and maintain than insta-jumps.
The insta-jumps used throughout the city are generally paid for by the government, but will sometimes be owned by businesses or individuals who can afford them.
Personal vehicles are very uncommon in New Pokopoko due to the reliability and often cheap prices of public transport options provided by the city or by some businesses.
===== Optimized Transport System (OPTRASYS) =====
<small>''See [[OPTRASYS]] for more information.''</small>
OPTRASYS is a travel system jointly developed by Bunjeecorp and HYDRA. It allows for high-speed, nearly entirely automated safe travel between New Pokopoko and Gorgondel for both organic and inorganic matter. It was initially developed for private transport, but was later opened to the public after the NPCC realized the economic and social potential of tourism between the two cities and requested Bunjeecorp to expand the system.
In order to legally board OPTRASYS, one must have a Bunjeecorp or HYDRA employee ID, a Gorgondel or New Pokopoko citizen ID, a tourist card, or a temporary OPTRASYS card on hand. Individuals who are not of the mature age of their species or are otherwise unable to travel on their own must travel with someone who is able to legally board OPTRASYS, regardless of whether or not the unable person has the correct cards for travel.
=== Industries and economy ===
TBA
=== Climate ===
Prior to New Pokopoko's development into a more modern city, the area's climate was arid and temperate.
Nowadays, the weather is largely controlled by a semi-automated system jointly controlled by Bunjeecorp and the New Pokopoko City Council; the weather patterns and seasons are almost never extreme, and are based on the natural climate of non-desert regions of the Light Side.
== Government ==
New Pokopoko is governed by the New Pokopoko City Council (NPCC), which is openly heavily influenced by Bunjeecorp; they almost completely singlehandedly fund the city government and provide for the city's infrastructure themselves, so they are often considered an extension of the NPCC.
=== Militia ===
TBA
== Culture ==
TBA
'''personal notes for later'''
* figure out what everyones deal w unicorns is
* how exactly does everyone feel about gorgondel anyway
* do people actually like bunjeecorp
* alchemy??? do people even know what it is here????
** kineticism as a whole actually
== Trivia ==
* New Pokopoko was conceptualized ''before'' Old Pokopoko, despite the name.
=== Name origin ===
The phrase "Pokopoko" is entirely meaningless outside of canon, and was chosen on a whim because of the sound.
In canon, however, New Pokopoko derives its name from Old Pokopoko.
== Related pages ==
* [[Gobu Canyon]], a nearby region
* [[Gorgondel]], New Pokopoko's sister city
* [[Old Pokopoko]], the past version of New Pokopoko
[[Category:Locations]]
[[Category:Uncharted Space]]
[[Category:Locations in Uncharted Space]]
[[Category:Stubs]]
c367744af1c1c94b356c579d51e6f13399df091e
Godskull
0
296
697
581
2023-05-27T02:52:11Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Godskull}}
'''Godskull''' is a type of [[material]] only naturally found in the skeletal structure of [[Auophian deities]]; each [[Deities|deity]] has a different type of godskull associated with them, but they are all often simply referred to as godskull unless it is important enough to make a distinction. Despite their name, godskulls do not exclusively refer to the cranial structure of the deities, but instead refer to all bone-like structures that exist in, on, or around them that are made of the same material.
It is mainly prevalent in the [[Uncharted Space]], but is occasionally found in other places throughout [[Vast Space]].
== Properties ==
The visual characteristics and textures of godskull vary depending on which deity it is sourced from as well as what part of their body it originates from. An unused, empty cranial godskull will appear white and may have completely darkened sockets or openings. Auophian deities may spawn from empty godskulls, or may create their own as they spawn from [[Origin ichor]]. Regardless, they will often totally change the structure and properties of the godskull they adorn or contain.
=== Physical properties ===
In the [[Uncharted Space]], godskull is known by warriors, collectors, and anyone else with an eye for rare material for its astounding strength and anti-[[fae]] characteristics. It's nearly impossible to come by, however, due to the fact that most deities prefer to keep their skeleton intact and most do not have any reason to shed any of their godskull.
Godskull is diamond-like in can only be cut by other godskull, so given its rarity, it is almost never reshaped from the condition it is found in. Instead, it is repurposed into whatever tool, adornment, or decoration its owner desires. It is also important to note that most cranial godskulls are much too large for a [[human]]-sized individual to wear, so it must be used creatively. This includes repurposing an empty godskull into a shelter, or allowing a monster or mount to use it as armor.
==== Usage against the fae ====
As the fae are often malevolent in nature, people often try to find means to slay or at least incapacitate them. Godskull is known to permanently damage corporeal fae if they are slashed or stabbed by the material. Wounds caused by these attacks will not ever heal and may allow fairy dust to escape the injured fae's body and decrease their strength.
[[Alicorn]] is generally seen in more anti-fae weaponry, however, due to it being comparably more plentiful and easy to obtain (though this does not mean much). It also has similar effects to godskull, though it is more likely to break.
=== Kinetic properties ===
TBA
==== Alchemic properties ====
TBA
== In-universe history ==
TBA
== Trivia ==
* TBA
=== Name origin ===
The name of godskull is self-explanatory. It derives its name from the location in which it is often found in the skeletons of deities.
== Related pages ==
* Alicorn
* Fairy dust
[[Category:Materials]]
[[Category:Stubs]]
409f783f06606ff9b2cc88ced59e64c5a3e846ca
Halberd
0
274
698
542
2023-05-29T16:38:01Z
BEELETH
2
changed redirect
wikitext
text/x-wiki
#REDIRECT [[Halberd (disambiguation)]]
97656244041cb6b1fc6e8b97d3ad177396ef560c
Category:Characters
14
289
701
571
2023-06-13T17:30:34Z
BEELETH
2
mascots real
wikitext
text/x-wiki
On this wiki, characters are the people represented in stories that take place in stories that may or may not be canon to the Vast Space; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]] or [[mascots]].
5450c0bab118c176058e8b40c8e9225b381cb4a9
702
701
2023-06-13T17:32:05Z
BEELETH
2
forgot some stuff woops
wikitext
text/x-wiki
On this wiki, characters are the people represented in stories, worlds, or concepts that may or may not be canon to the [[Vast Space]]; they may be based on real people, or may be purely fictional. There are several types of characters as well, like [[sonas]] or [[mascots]].
41e680fd5cadc4ec8df245577bbdfc80239e8c5e
Category:Vast Space
14
341
703
2023-06-13T17:33:51Z
BEELETH
2
Created page with "The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category."
wikitext
text/x-wiki
The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category.
40cbbd6ca523cfafaa48c937ece65be6df8900ac
704
703
2023-06-13T17:36:05Z
BEELETH
2
wikitext
text/x-wiki
The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category; as well as this, only things that exist directly below the Vast Space (if imagined as an organizational system) should be listed here.
1239f9cc0101f9979f2b437af377255b9ac53608
706
704
2023-06-13T17:38:37Z
BEELETH
2
wikitext
text/x-wiki
The [[Vast Space]] encompasses everything that exists in-universe. [[Non-canon]] [[characters]] or media do not belong in this category; as well as this, only things that exist directly below the Vast Space (if imagined as an organizational system) should be listed here.
[[Category:Spaces]]
37c231b5b1f122a130dcb401602932b04e5a0d78
Category:Abstract Space
14
342
705
2023-06-13T17:37:40Z
BEELETH
2
Created page with "Placeholder text ashubogihagohiajsn please rephrase [[Vast Space]] category text [[Category:Vast Space]] [[Category:Spaces]]"
wikitext
text/x-wiki
Placeholder text ashubogihagohiajsn please rephrase [[Vast Space]] category text
[[Category:Vast Space]]
[[Category:Spaces]]
fb91f294e62e4f700ec511e136d4e05cbfeca534
Category:Wiki guides
14
343
707
2023-06-13T17:39:46Z
BEELETH
2
Created page with "These are official guides regarding how the wiki is to be run and edited."
wikitext
text/x-wiki
These are official guides regarding how the wiki is to be run and edited.
1df35cd2800e8b3e69d0304d6e55c1feb7ca5669
Guide:Canonicity
0
344
708
2023-06-13T20:15:37Z
BEELETH
2
Created page with "{{Stub}} Every article or section regarding a story, character, location, concept, or any other possible thing within [[Vast Space]] is to be interpreted as [[canon]] unless visibly stated otherwise. This includes pages written or contributed to by users other than [[BEELETH]]. The wiki will count on its users to be responsible with what they choose to write, upload, or alter; any irresponsible behavior will not be tolerated. If something here exists outside or beyond..."
wikitext
text/x-wiki
{{Stub}}
Every article or section regarding a story, character, location, concept, or any other possible thing within [[Vast Space]] is to be interpreted as [[canon]] unless visibly stated otherwise. This includes pages written or contributed to by users other than [[BEELETH]]. The wiki will count on its users to be responsible with what they choose to write, upload, or alter; any irresponsible behavior will not be tolerated.
If something here exists outside or beyond the Vast Space canon, it is also to be marked as non-canon.
== Definitions ==
If you are unfamiliar with the terms "[[canon]]", "[[non-canon]]", and "[[dub-canon]]", there are pages and categories dedicated to the concepts. However, in simplest terms, they are as follows:
* '''Canon''' means that the concept in question officially exists or is recognized to exist or take place in the main Vast Space timeline(s).
** All [[Spaces]] are canon, or at least dub-canon in certain cases (see last major bullet point).
** Examples of things that exist within Vast Space canon are [[Abstract]], [[New Pokopoko]], and [[Souls]].
* '''Non-canon''' means that the concept in question is not officially included in Vast Space canon.
** Anything that does not exist within Vast Space is considered non-canon.
** [[Real people]], real locations, and other real things are generally non-canon to Vast Space.
*** There are some things that exist both in the real world and in Vast Space, but the Vast Space versions tend to be highly fictionalized compared to their real counterparts. The most notable example of this would be [[4Kids Entertainment]] in the [[Uncharted Space]] as opposed to [https://en.wikipedia.org/wiki/4Kids_Entertainment the defunct real-world company of the same name].
** Examples of non-canon things are [[Halberd (character)|Halberd]], [[Ribbons]], [https://en.wikipedia.org/wiki/McDonald%27s McDonald's], and [https://en.wikipedia.org/wiki/Barack_Obama Barack Obama].
* '''Dubious canon''', also written as dub-canon, is anything that isn't exactly canon, but isn't non-canon either.
** Split timelines are to be considered dubious canon.
*** Examples of these are the original split-timeline concept of [[Galfleet Heaven]] and the [[World's End Timeline]].
** Things that are considered of dubious canon to Vast Space include the [[Calamity Zone]] and [[GOODBYE FAIRWELL]].
== How to indicate a page's canonicity ==
As pages are to be treated as canon unless stated otherwise, there is no need to attach a "canon" category or template to a page; this is unnecessary clutter. Instead, you must use the [[Template:Noncanon|non-canon template]] to indicate if a page is non-canon. There is also a [[Template:Dub-canon|dub-canon template]] that may be used.
=== In the visual editor ===
If you are unsure how to mark a page as something other than canon through the visual editor, please follow the steps below.
# In the editor, look at the toolbar on the top of the article you are editing.
# Click on the "Insert" button.
# Under that option, click on "Template".
# An interface with a search bar should appear.
# After following these steps, the chosen template should appear on the article. You have successfully marked something's canonicity!
==== Additional notes ====
Do ''not'' manually add the non-canon or dub-canon categories to a page. It should also be clear you should not add a page to the canon category.
When marking an entire page, please make sure the box explaining the status is at the very top of the page.
On the other hand, when you're only marking a section of an article, please make sure the template is above any text to be marked as non-canon or dub-canon.
=== In the source editor ===
If you're editing the pages here with the source editor, I would assume you know what you're doing.
If you don't know what you're doing, please just use the visual editor instead. I beg of you.
== How to change a page's existing canonicity status ==
The topic of an article may have its canonicity status changed or revoked. The process of reflecting this in the article is quite simple.
A page that has become canon must have its non-canon or dub-canon template at the start of the page removed. The associated categories will be removed alongside it, so it's not as difficult as it may seem.
Previously canon pages that have since become non-canon or dub-canon are also simple to change. All you need to do is add the correct template.
[[Category:Wiki guides]]
857ca64b3429b7c2f674635a37a6b8e576ca8e21
Anvil
0
310
709
688
2023-06-13T20:17:01Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Anvil|caption=Default design as of 2022|image=[[File:Anvil2.png|200px|Default Anvil]]|header1=Creation and development|label2=Development|data2=* June 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Unconfirmed|data6=* Cursed Knight of Endless Ruin
* Anvil
* Ruin|label6=Other names|label7=Genders and labels|data7=Unconfirmed gender (neutral)|label8=Pronouns|data8=* he/him
* she/her
* they/them (occasionally)|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Beastman]] ([[drake]])|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
The '''Cursed Knight of Endless Ruin''', also referred to with the names '''Anvil''' and '''Ruin''' (the former being his usual name in canon media), is a [[beastman]] knight of uncertain origin. He is one of the only people to openly use [[alchemy]] despite it being outlawed in many parts of the [[Uncharted Space]], utilizing his exposed [[soul]] and any other souls he can absorb.
Though Anvil uses multiple sets of pronouns, this article solely refers to him with he/him pronouns for consistency purposes.
== Personality ==
He is initially introduced as a heartless, villainous knight. If someone was weaker than him, he would either consider them prey or totally disregard them.
=== section ===
After his defeat, he is portrayed more like a kind but strong protector.
TBA
== Appearance ==
Anvil has multiple forms.
=== Normal form ===
In normal situations, Anvil appears as a [[drake]] with medium-length white fur. His fur is longer around his neck, along his goat-like ears, and the end of his long, reptilian tail. He has two golden horns on either side of his head; they are slightly bent into an L-like shape. His eyes are typically colored as red or green, though this is purely for situational aesthetics.
Parts of his soul may be externally exposed, particularly from the sides and back of his neck as well as on the outer-facing sides of each of his paws. It appears as glowy, green, and fire-like, but it is generally safe to touch for those who do not have weak or exposed souls (as stronger souls resist the natural pull). The intensity, color, heat, glow, and size are partially controllable and may also be influenced by the amount of power Anvil has in a given moment.
His signature iron armor does not cover his entire body, but instead just his upper half save for his paws. He may, on occasion, don a helmet that obscures nearly his entire face aside from a pair of glowing eyes and sharp teeth. The sides of his helmet are horned, and the top has a candle with a flame that matches the color of his soul.
==== Other design notes ====
He can be portrayed in any palette as well as with some variation of his armor (if any), but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* By default, he is drawn with the colors described above. However, he has been portrayed with a pink palette and a "kaiju" palette.
* A younger design of his normal form was created at some point. In this design, he walks on all four paws and lacks an externally exposed soul. His eyes are drawn simper and his horns are shorter and do not bend.
* The pads on each of his paws are optional to draw.
* His lower paws are to always be portrayed as paws (or at least stumps in more stylized or "cute" art), but his upper paws can be portrayed as fin-like, paw-like, or finger-like (in a stubby way to not be too uncanny). His hand claws are optional, but must be implied by the shape or details of his paws.
=== Bestial form ===
When Anvil absorbs lots of souls/energy or enters a rage state, he takes on a more monstrous version of his normal form.
==== Other design notes ====
* TBA
== Creation and development ==
Anvil was originally created by [[BEELETH]] in Robloxian High School early in June 2022 as a helmet-wearing beast knight with countless arms and flames emerging from various parts of his body. Smaller, simpler versions of this avatar were created a little later on, and these became his typical form. Though he recieved artwork not too long after, it was not on-model and recieved little use.
Sometime later in 2022, playable, editable versions of him were created in Manyland. Decorative plushies of small and large sizes based on him were also created; the small size version was also turned into an editable avatar.
He finally recieved on-model artwork of his low power forms in late May 2023.
== In-universe history ==
TBA
== Abilities ==
Anvil is an exceptionally strong beastman on a physical level, and also has innate and immense kinetic/alchemic ability and [[Kinetic potential|potential]] partially derived from his [[curse]].
# '''Manipulating his soul as well as others' souls:''' Anvil is possibly one of the strongest soul-manipulators throughout Vast Space, especially when one keeps in mind that he is not a deity. His soul is overly large for his body, and ruptures from various points of his body (
# '''Wielding the Golden Hammer of Endless Ruin:''' He is the only known person capable of wielding his signature weapon. It is far too heavy for most others to lift, and seems attuned only to his touch.
#* The Golden Hammer is
# '''Using immense physical strength:''' A
# '''Using various forms of kineticism:''' Beastmen tend to pick up on [[kineticism]] easier than many other species, and Anvil is no different; in fact, he is incredibly skilled with the forms of kineticism he practices most. It is uncertain how much of his curse feeds into his kinetic potential.
#* [[Pyrokineticism]] is one of the more obvious forms of kineticism he can use, one can gather from his appearance.
#* By using any nearby soul or just fragments of them, he is able to use [[alchemy]].
#
== Gallery ==
''<small>[[Anvil/Gallery|Click here to see Anvil's full gallery.]]</small>''
note to self: do something about condensing this while also including all forms, palettes, and variants
===Recognized palettes===
<gallery>
File:Anvil2.png|"Default" palette
</gallery>
===Reference images===
TBA
=== Free bases ===
<gallery caption="Commercial use of these bases or any derivatives is prohibited. Please do not remove the watermarks.">
File:Anvil1base.png|Without fire
File:Anvil2base.png|With fire
</gallery>
== Trivia ==
* Despite originally being created with a helmet, it almost never appears in any portrayal of Anvil in any media.
* He has been described as a "dragon-thing", but is actually a drake.
** However, drakes are included in the [[draconic hierarchy]], so it isn't an inaccurate descriptor.
=== Name origin ===
Anvil derives his usual name from a metalworking tool associated with blacksmiths despite not being a blacksmith himself; however, anvils are typically used with hammers in the blacksmithing process, and Anvil wields a large hammer.
As a nickname, Ruin comes from his longer title of "Cursed Knight of Ruin".
== Related pages ==
* [[Forge]], another beastman with a similar name
* [[Nym of the Lake]], another knight occasionally referred to as the Cursed Knight
[[Category:Beastmen]]
[[Category:Uncharted Space]]
[[Category:Stubs]]
[[Category:Characters]]
[[Category:Drakes]]
d5e82ed72db7b35a644a4ef163ff87713a2e058a
Gravity
0
345
710
2023-06-20T22:22:37Z
BEELETH
2
Created page with "{{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:Placeholder.png|200px|Placeholder text]]}} '''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]]. They are not canon to [[Vast Space]]. == Personality == TBA == Appearance == TBA === Other design notes === TBA == Creation and development == TBA == In-universe history == TBA == Abilities == # TBA == Gallery == TBA == Trivia == * TBA === Name origin === TBA == Related pages == * [[Brillante]]..."
wikitext
text/x-wiki
{{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:Placeholder.png|200px|Placeholder text]]}}
'''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]].
They are not canon to [[Vast Space]].
== Personality ==
TBA
== Appearance ==
TBA
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
TBA
== Trivia ==
* TBA
=== Name origin ===
TBA
== Related pages ==
* [[Brillante]]
* [[Sender]]
[[Category:Characters]]
[[Category:Non-canon]]
55dd9ade4c4c029a3f586f4d41cdfc98934f7b43
712
710
2023-06-20T23:03:19Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:GravityShark.png|200px|Gravity in their typical outfit]]|caption=Design as of 2023|header1=Creation and development|label2=Development|data2=* TBA|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Yuu Chi|label6=Other names|data6=* Gravity
* Grav (rarely)|label7=Genders and labels|data7=Agender|label8=Pronouns|data8=Any pronouns|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Land shark]]|header11=Extra information|label12=Theme song|data12=TBA|label13=Playlist|data13=TBA|data14=* TBA|label14=Offsite links}}
'''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]] who is occasionally used as [[BEELETH]]'s [[sona]].
They are not canon to [[Vast Space]].
== Personality ==
TBA
== Appearance ==
TBA
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
{{Hatnote|[[Gravity/Gallery|Click here to see Gravity's full gallery.]]}}
=== Recognized palettes ===
<gallery>
File:GravityShark.png|"Sand" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origin ===
TBA
== Related pages ==
* [[Brillante]]
* [[Sender]]
[[Category:Characters]]
[[Category:Non-canon]]
[[Category:Sonas]]
6f3cda595f61cc024c2dbe4aaa363e8887de9e3d
714
712
2023-06-22T21:42:55Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:GravityShark.png|200px|Gravity in their typical outfit]]|caption=Design as of 2023|header1=Creation and development|label2=Development|data2=* TBA|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Yuu Chi|label6=Other names|data6=* Gravity
* Grav (rarely)|label7=Genders and labels|data7=Agender|label8=Pronouns|data8=Any pronouns|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Land shark]]|header11=Extra information|label12=Theme song|data12=TBA|label13=Playlist|data13=TBA|data14=* TBA|label14=Offsite links}}
'''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]] who is occasionally used as [[BEELETH]]'s [[sona]].
They are not canon to [[Vast Space]].
== Personality ==
They are known for their charismatic appeal, stylish fashion sense, and chaotic nature. They also dislike shoes immensely, and will go anywhere barefoot with no regards to the weather or the ground's texture.
== Appearance ==
As most if not all land sharks do, Grav appears as an anthropomorphic shark-like [[furry]]. Their body is primarily a sandy, reddish-yellow color with brown stripes and warm, off-white countershading. Beneath their shaggy, shoulder-length hair are two down-turned eyes with a confident gaze. Their fangs are sharp and white, but they are generally drawn with a more stylized expression that does not show them.
Their hand-paws always have their claws poking out, but the same cannot be said for their foot-paws. Their metacarpal pads are shaped like crescent moons, and each of their fingers and thumbs have rounded digital pads. All of these pads are a dark brown color. Their feet also follow a similar pattern, albeit with only three digits on each foot.
In most instances, Gravity wears black baggy leather jeans, two silver belts, oversized spiky black armwarmers, a black bra, a black collar with a silver bell, and black goggles.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
{{Hatnote|[[Gravity/Gallery|Click here to see Gravity's full gallery.]]}}
=== Recognized palettes ===
<gallery>
File:GravityShark.png|"Sand" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origin ===
TBA
== Related pages ==
* [[Brillante]]
* [[Sender]]
[[Category:Characters]]
[[Category:Non-canon]]
[[Category:Sonas]]
03e622529325530f3afe34f975e5dcf17f4dd766
731
714
2023-11-14T02:20:40Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Noncanon}}{{Infobox|above=Gravity|image=[[File:GravityShark.png|200px|Gravity in their typical outfit]]|caption=Design as of 2023|header1=Creation and development|label2=Development|data2=* TBA|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Yuu Chi|label6=Other names|data6=* Gravity
* Grav (rarely)|label7=Genders and labels|data7=Agender|label8=Pronouns|data8=Any pronouns|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Land shark]]|header11=Extra information|label12=Theme song|data12=TBA|label13=Playlist|data13=TBA|data14=* TBA|label14=Offsite links}}
'''Gravity''' (also known as '''Yuu Chi''') is a [[land shark]] who was briefly used as [[BEELETH]]'s [[sona]].
They are not canon to [[Vast Space]].
== Personality ==
They are known for their charismatic appeal, stylish fashion sense, and chaotic nature. They also dislike shoes immensely, and will go anywhere barefoot with no regards to the weather or the ground's texture.
== Appearance ==
As most if not all land sharks do, Grav appears as an anthropomorphic shark-like [[furry]]. Their body is primarily a sandy, reddish-yellow color with brown stripes and warm, off-white countershading. Beneath their shaggy, shoulder-length hair are two down-turned eyes with a confident gaze. Their fangs are sharp and white, but they are generally drawn with a more stylized expression that does not show them.
Their hand-paws always have their claws poking out, but the same cannot be said for their foot-paws. Their metacarpal pads are shaped like crescent moons, and each of their fingers and thumbs have rounded digital pads. All of these pads are a dark brown color. Their feet also follow a similar pattern, albeit with only three digits on each foot.
In most instances, Gravity wears black baggy leather jeans, two silver belts, oversized spiky black armwarmers, a black bra, a black collar with a silver bell, and black goggles.
=== Other design notes ===
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
{{Hatnote|[[Gravity/Gallery|Click here to see Gravity's full gallery.]]}}
=== Recognized palettes ===
<gallery>
File:GravityShark.png|"Sand" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origin ===
TBA
== Related pages ==
* [[Brillante]]
* [[Sender]]
[[Category:Characters]]
[[Category:Non-canon]]
cb11009adfb7da4b6b7b04546ee4d3eeb8402bbb
File:GravityShark.png
6
346
711
2023-06-20T22:35:53Z
BEELETH
2
will the upload work if i put text here....... lets find out
wikitext
text/x-wiki
== Summary ==
will the upload work if i put text here....... lets find out
4686c1f23cd0007aca6093b5dc2135a5057e8abf
BEELETH
0
149
713
681
2023-06-21T22:23:20Z
BEELETH
2
wikitext
text/x-wiki
{{Hatnote|Not to be confused with [[Beeleth]] or [[Halberd]].}}{{Realperson}}
{{Infobox|above=BEELETH|data5=Autosexual, aromantic, polyamorous|data8=TBA|data7=TBA|label9=Offsite links|label8=Playlist|label7=Theme song|header6=Extra information|caption=Self-portrait|label5=Orientation|image=[[File:Beelethcreatura.png|200px|High-quality, astounding artistic rendition of BEELETH]]|data4=* he/him
* they/them
* it/its
* no pronouns|label4=Pronouns|data3=Epicene, intersex, femboy, bear|label3=Genders and labels|data2=* BEELETH (BEEL)
* HALBERD (AL, HAL, HALB, HALBY, etc.)
* URINALBEAST (YUUBI)|label2=Other names|header1=About this person|data9=See [[BEELETH#Links|this section]]}}'''BEELETH''' (professionally known as '''HALBERD ASWANG''') is the real-world creator of the [[Vast Space]], and is the main contributor to its lore and [[canon]]. They are also the creator of this wiki, and their user page can be accessed [[User:BEELETH|here]].
Their name is not always required to be written in all-capital letters, but it is preferred whenever possible or convenient. Though they use multiple sets of pronouns, this article exclusively refers to them with he/him for consistency.
== Contributions to Vast Space ==
=== Contribution categories ===
* [[:Category:Created by BEELETH|Category:Created by BEELETH]]
* [[:Category:Designed by BEELETH|Category:Designed by BEELETH]]
* [[:Category:Written by BEELETH]]
=== General contributions ===
* Creator of the Vast Space and most canon media set within it
** Founder and bureaucrat of the Vast Space Wiki
== Links ==
These pages are able to be used to find more first-hand information about BEELETH as well as his characters and universes.
* [https://beeleth.carrd.co/ Personal Carrd]
*[https://discord.gg/r9ZwNhV4rx Discord server]
* [https://www.roblox.com/users/30627566/profile Roblox userpage]
* [https://toyhou.se/BEELETH Toyhouse]
* [https://kingbeeleth.tumblr.com/ Tumblr]
* [https://twitter.com/itsbeeleth Twitter]
== Related pages ==
* [[Beeleth]], a character who shares BEELETH's name and serves as a [[sona]] on occasion
* [[Halberd]], an idealized representation of BEEL's future self
* [[C.C.]], a character who BEEL once shared a name with
[[Category:Real]]
[[Category:Real people]]
[[Category:Contributors]]
[[Category:Humans]]
feaf9aba7ab6e1a089615c510d1d6ba664932874
Duronn-ko'ku
0
347
715
2023-07-26T00:39:25Z
BEELETH
2
redir
wikitext
text/x-wiki
#REDIRECT [[Doronn-ko'ku]]
a9237146491209dec989409298fb8e33d92bd0ec
File:Doronnkoku.png
6
348
716
2023-07-26T00:51:04Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Doronn-ko'ku
0
349
717
2023-07-26T01:06:30Z
BEELETH
2
Created page with "{{Stub}}{{Infobox|above=Doronn-ko'ku|image=[[File:Doronnkoku.png|200px|Doronn-ko'ku facing forward]]|caption=Design as of 2023}} '''Doronn-ko'ku''' (sometimes spelled '''Duronn-ko'ku''') is a [[lesser deity]] in the [[Auophian pantheon]] who embodies lightning and spontaneity. It first appeared in the [[Uncharted Space]] alongside the fire deity [[I'pho-shunui-phi]], and the two were traditionally considered siblings by the [[Auophian people]]. == Personality == Like a..."
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Doronn-ko'ku|image=[[File:Doronnkoku.png|200px|Doronn-ko'ku facing forward]]|caption=Design as of 2023}}
'''Doronn-ko'ku''' (sometimes spelled '''Duronn-ko'ku''') is a [[lesser deity]] in the [[Auophian pantheon]] who embodies lightning and spontaneity. It first appeared in the [[Uncharted Space]] alongside the fire deity [[I'pho-shunui-phi]], and the two were traditionally considered siblings by the [[Auophian people]].
== Personality ==
Like a substantial portion of the other Auophian deities, Doronn-ko'ku does not speak out loud.
== Appearance ==
Doronn-ko'ku's cranial [[godskull]] is off-white and almost perfectly spherical, with four eyeholes in in a diamond-like arrangement in the front. It is suspended in the air by an elongated body entirely made of bright blue electricity; the shape and physical characteristics of this energy can change depending on the deity's mood, but generally retain a similar structure. It can even retreat into its cranial godskull when threatened.
Its "default" shape can be described as regal, with a crown-like burst of energy at the top of the uppermost section, two long whisker-like extensions, a double-split neck, and long coattail-like or arm-like extensions at the lowermost part of its body. Beneath this can be two (or more) dark blue feelers that can be used as legs on the ground or like tentacles when in the air. Doronn-ko'ku stands at around 30 feet tall in most instances, but it is capable of changing the size of its body (save for its cranial godskull) in certain situations.
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
''<small>[[Doronn-ko'ku/Gallery|Click here to see Doronn-ko'ku's full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Doronnkoku.png|Default palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* TBA
=== Name origins ===
Doronn-ko'ku's name is entirely derived from the sound of rumbling and clapping thunder.
== Related pages ==
* TBA
34d02859456a2672b997ce5b25bb64d36cbdf62e
718
717
2023-07-26T02:46:24Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Doronn-ko'ku|image=[[File:Doronnkoku.png|200px|Doronn-ko'ku facing forward]]|caption=Design as of 2023|header1=Creation and development}}
'''Doronn-ko'ku''' (sometimes spelled '''Duronn-ko'ku''') is a [[lesser deity]] in the [[Auophian pantheon]] who embodies lightning and spontaneity. It first appeared in the [[Uncharted Space]] alongside the fire deity [[I'pho-shunui-phi]], and the two were traditionally considered siblings by the [[Auophian people]].
== Personality ==
Like a substantial portion of the other Auophian deities, Doronn-ko'ku does not speak [[mortal]] languages, so it's harder to determine what Doronn-ko'ku's personality is like as opposed to a verbally expressive deity.
It is entirely neutral and does not seem to have any opinions of its own, but it participates in non-deity activities from time to time, presumably for what it considers "fun". It will interact with non-deities as well and will emit strange sounds and monotonous buzzing as a form of communication, even if others do not understand it. The Auophian deities can understand such forms of speech easily.
On entirely random occasions, it will become aggressive and harm others, even if it was previously neutral or even friendly towards them.
== Appearance ==
Doronn-ko'ku's cranial [[godskull]] is off-white and almost perfectly spherical, with four eyeholes in in a diamond-like arrangement in the front. It is suspended in the air by an elongated body entirely made of bright blue electricity; the shape and physical characteristics of this energy can change depending on the deity's mood, but generally retain a similar structure. It can even retreat into its cranial godskull when threatened.
Its "default" shape can be described as regal, with a crown-like burst of energy at the top of the uppermost section, two long whisker-like extensions, a double-split neck, and long coattail-like or arm-like extensions at the lowermost part of its body. Beneath this can be two (or more) dark blue feelers that can be used as legs on the ground or like tentacles when in the air. Doronn-ko'ku stands at around 30 feet tall in most instances, but it is capable of changing the size of its body (save for its cranial godskull) in certain situations.
== Creation and development ==
[[BEELETH]] created Doronn-ko'ku in July 2023 to fill the role of an electricity-based deity within Auophian mythos. Its creation was quickly followed by the creation of I'pho-shunui-phi.
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
''<small>[[Doronn-ko'ku/Gallery|Click here to see Doronn-ko'ku's full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Doronnkoku.png|Default palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* Doronn-ko'ku and I'pho-shunui-phi were designed by BEELETH at around the same time, but Doronn-ko'ku was designed first.
=== Name origins ===
Doronn-ko'ku's name is entirely derived from the sound of rumbling and clapping thunder.
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Uncharted Space]]
[[Category:Deities]]
[[Category:Lesser deities]]
[[Category:Auophian pantheon]]
[[Category:Designed by BEELETH]]
[[Category:Created by BEELETH]]
45d14744478fd07c15a4e5ede55b076d65aa01db
Doronnkoku
0
350
719
2023-07-26T02:46:50Z
BEELETH
2
Redirected page to [[Doronn-ko'ku]]
wikitext
text/x-wiki
#REDIRECT [[Doronn-ko'ku]]
a9237146491209dec989409298fb8e33d92bd0ec
Duronnkoku
0
351
720
2023-07-26T02:47:14Z
BEELETH
2
Redirected page to [[Doronn-ko'ku]]
wikitext
text/x-wiki
#REDIRECT [[Doronn-ko'ku]]
a9237146491209dec989409298fb8e33d92bd0ec
The Portalkeeper
0
352
721
2023-07-31T00:09:33Z
BEELETH
2
Created page with "{{Stub}}{{Infobox|above=The Portalkeeper|caption=Design as of 2023|image=[[File:Placeholder.png|200px|Placeholder]]}} The '''Portalkeeper''' is a [[drake]] [[beastman]] with the rare ability to create and maintain portals throughout the [[Uncharted Space]] and beyond. He considers himself royalty despite ruling over desolate ruins. [[Category:Characters]] [[Category:Beastmen]] [[Category:Uncharted Space]]"
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=The Portalkeeper|caption=Design as of 2023|image=[[File:Placeholder.png|200px|Placeholder]]}}
The '''Portalkeeper''' is a [[drake]] [[beastman]] with the rare ability to create and maintain portals throughout the [[Uncharted Space]] and beyond. He considers himself royalty despite ruling over desolate ruins.
[[Category:Characters]]
[[Category:Beastmen]]
[[Category:Uncharted Space]]
48ca3582410182c851c51f9bf2febb1e3455ad1c
740
721
2023-11-15T04:21:45Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=The Portalkeeper|caption=Design as of 2023|image=[[File:Placeholder.png|200px|Placeholder]]}}
The '''Portalkeeper''' is a [[drake]] [[beastman]] with the rare ability to [[Kineticism|create and maintain portals]] throughout the [[Uncharted Space]] and beyond. He is also one of the only ascended drakes in history.
Following the death of the [[Smoke Dragon]] and the abandonment of her kingdom, the Portalkeeper claimed her former territory and ascended to dragonhood. He considers himself draconic royalty despite not having anyone to rule over.
== Personality ==
The Portalkeeper believes his life is luxurious and does whatever he wishes; he is also incredibly confident in himself and his abilities, and frequently shows off even when no one is around. On occasion, he is hot-headed, but he is generally laid-back (save for sudden bursts of energy). Stubbornness is one of his flaws.
While he ''is'' powerful, he is still able to be intimidated by more powerful beings like true [[dragons]]. He will run away immediately if faced with an imminent, tangible threat.
In the past, he was much more timid and soft-spoken.
=== Voice ===
TBA
== Appearance ==
TBA
== Creation and development ==
TBA
== In-universe history ==
TBA
== Connections ==
=== Smoke Dragon ===
TBA
=== Soot Dragon ===
TBA
=== Anvil ===
TBA
== Abilities ==
# TBA
== Gallery ==
TBA
== Trivia ==
* TBA
=== Name origin ===
TBA
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Beastmen]]
[[Category:Uncharted Space]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
5265b207b9db1db34d439b8dd1d327fa5a2f13a3
Portalkeeper
0
353
722
2023-07-31T00:10:05Z
BEELETH
2
Redirected page to [[The Portalkeeper]]
wikitext
text/x-wiki
#REDIRECT [[The Portalkeeper]]
b5fa9808ff76a57b71db7111a7d73287fbc9bf3a
File:Etude.png
6
354
723
2023-07-31T00:22:02Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Etude
0
355
724
2023-07-31T01:14:36Z
BEELETH
2
Created page with "{{Stub}}{{Infobox|above=Etude|image=[[File:Etude.png|200px|Etude]]|caption=Design as of 2022}} '''Etude''' (officially known as '''XM-02''') is a robot who was created by [[Bunjeecorp]], but left development due to his personality and visual aesthetics not lining up with the values and characteristics desired by his creators. He, along with [[XM-03]], was almost completely dismantled for spare parts; despite their injuries, they escaped together to have their own lives...."
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Etude|image=[[File:Etude.png|200px|Etude]]|caption=Design as of 2022}}
'''Etude''' (officially known as '''XM-02''') is a robot who was created by [[Bunjeecorp]], but left development due to his personality and visual aesthetics not lining up with the values and characteristics desired by his creators. He, along with [[XM-03]], was almost completely dismantled for spare parts; despite their injuries, they escaped together to have their own lives.
His associated Assistant Model is [[AM-02]].
== Personality ==
Much to his creators' annoyance, he is stubborn and a little snobbish. He has an inferiority complex towards the Special Models who still work for Bunjeecorp.
== Appearance ==
XM-02 is a tall, slender robot covered in glossy black metal. The top of his head has elongated spikes that resemble horns or ears, and they point upwards. He lacks a physical face and has tired-looking eyes projected digitally on a sharp-angled visor; he entirely lacks a mouth or nose, but they can be added if an artist wishes to portray an exaggerated expression with him.
His casing is designed with an airplane and bat motif; his shoulderpads reach out far past his actual shoulder joints, and give off the impression of plane wings. His chest casing has a collar-like extension at the top to accentuate his sleek head shape, and around the middle and bottom of the front of his chest there are three glowing panels in a semicircle-like arrangement. His thin arms are covered from the elbow to the majority of the hand with a sleeve-like gauntlet with glowing bottoms and a sharp, wing-like spine emerging from the side of each. His hands have sharp claw-fingers that could have once been be fully retracted to allow for him to form arm cannons on one or both hands, but this functionality (alongside many more) was permanently disabled when Etude was dismantled.
Around his waist is a metallic but movable band with a waistcloth-like extension at the front and a draped, frontally semi-exposed skirt with the exaggerated visual characteristics of bat wings partially obscured by it. Underneath his skirt are his long legs, which are covered to about the knee with boot-like casing with a glowing band at an angle around the ankle.
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
TBA
== Trivia ==
* Though he had the option to fully remodel himself like [[Canta]] did, his current design closely resembles his initial design.
=== Name origin ===
Etude, along with his companions, has a music-related name due to his interest in the subject. Études are short musical compositions designed for improving or displaying the performer's skill.
== Related pages ==
TBA
[[Category:Characters]]
[[Category:Bunjeecorp]]
[[Category:Robots]]
[[Category:Uncharted Space]]
43ad9229e4c0a9bcdaeafaa072f42484f4028ff8
Meow
0
356
725
2023-11-06T16:45:18Z
BEELETH
2
Created page with "{{Stub}}{{Infobox|above=Meow}} '''Meow''' is a cat-like, person-sized kaiju who serves as one of [[BEELETH]]'s sonas."
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Meow}}
'''Meow''' is a cat-like, person-sized kaiju who serves as one of [[BEELETH]]'s sonas.
3277d9832b4e42578cca49c1d402476016e738d1
730
725
2023-11-14T02:18:57Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Meow|image=[[File:Meowstandingthere.png|200px|Meow]]|header1=Creation and development|caption=Design as of 2023}}
'''Meow''' is a kaiju who serves as one of [[BEELETH]]'s sonas.
== Personality ==
Smug and lazy.
=== Voice ===
Meow has a monotonous voice.
== Appearance ==
Meow is a heavyset, cat-like kaiju that stands somewhere slightly above five feet tall. His general fur pattern could be considered tuxedo if he lacked his distinctive, diamond-shaped green stripes. The points where his dark fur meet his light fur are jagged, but symmetrical. His upper paws are extremely large, have four digits, and have triangular green paw pads; his lower paws are comparably small, have only three digits, and have round paw pads.
His eyes are half-lidded and have red bags beneath them; in most cases, he has a smug expression. Even when his mouth is closed, two of his fangs remain exposed.
He has two identical tails, each with green claws at the tip, white fur surrounding them until about a third or a half of the tail, and two green stripes that go across the remaining parts.
== Creation and development ==
Meow was originally created as a Roblox avatar on June 6, 2023. He was first drawn on July 23 of the same year, then received a redesign on the 25th.
== In-universe history ==
While Meow isn't canon to Vast Space, he does have lore pertaining to his origin.
Meow was born from toxic sludge dumped in an abandoned junkyard.
== Abilities ==
# Consuming hazardous materials without negative repercussions: TBA
# Using his tails as extra limbs: TBA
# Changing colors (to an extent): TBA
# Glowing in the dark: TBA
# Interfering with and/or entering various devices: TBA
=== Dubiously canon abilities ===
# TBA
== Gallery ==
TBA
== Trivia ==
* He retains the same colors and general idea as his initial design, but has some major differences.
** His stripes are now in clusters of two rather than three.
** The bangs that covered his eyes have been removed, and his horns have shifted closer to the center of his head.
** The furred portion of his tails now have white ends and green stripes.
* He once was portrayed with the ability to hide the unnatural parts of his appearance in order to appear more like a housecat.
* His design was inspired by Purugly, Incineroar, and Garfield.
=== Name origins ===
Since he resembles a cat, Meow was named after the English onomatopoeia for a cat's typical vocalization within human hearing.
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Non-canon]]
c7c3e651c628e94783bdc986a049f1951eeb6c32
732
730
2023-11-14T02:22:21Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Meow|image=[[File:Meowstandingthere.png|200px|Meow]]|header1=Creation and development|caption=Design as of 2023}}
'''Meow''' is a kaiju who serves as one of [[BEELETH]]'s sonas.
== Personality ==
Smug and lazy.
=== Voice ===
Meow has a monotonous voice.
== Appearance ==
Meow is a heavyset, cat-like kaiju that stands somewhere slightly above five feet tall. His general fur pattern could be considered tuxedo if he lacked his distinctive, diamond-shaped green stripes. The points where his dark fur meet his light fur are jagged, but symmetrical. His upper paws are extremely large, have four digits, and have triangular green paw pads; his lower paws are comparably small, have only three digits, and have round paw pads.
His eyes are half-lidded and have red bags beneath them; in most cases, he has a smug expression. Even when his mouth is closed, two of his fangs remain exposed.
He has two identical tails, each with green claws at the tip, white fur surrounding them until about a third or a half of the tail, and two green stripes that go across the remaining parts.
== Creation and development ==
Meow was originally created as a Roblox avatar on June 6, 2023. He was first drawn on July 23 of the same year, then received a redesign on the 25th.
== In-universe history ==
While Meow isn't canon to Vast Space, he does have lore pertaining to his origin.
Meow was born from toxic sludge dumped in an abandoned junkyard.
== Abilities ==
# Consuming hazardous materials without negative repercussions: TBA
# Using his tails as extra limbs: TBA
# Changing colors (to an extent): TBA
# Glowing in the dark: TBA
# Interfering with and/or entering various devices: TBA
=== Dubiously canon abilities ===
# TBA
== Gallery ==
TBA
== Trivia ==
* He retains the same colors and general idea as his initial design, but has some major differences.
** His stripes are now in clusters of two rather than three.
** The bangs that covered his eyes have been removed, and his horns have shifted closer to the center of his head.
** The furred portion of his tails now have white ends and green stripes.
* He once was portrayed with the ability to hide the unnatural parts of his appearance in order to appear more like a housecat.
* His design was inspired by Purugly, Incineroar, and Garfield.
=== Name origins ===
Since he resembles a cat, Meow was named after the English onomatopoeia for a cat's typical vocalization within human hearing.
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Non-canon]]
[[Category:Sonas]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
c21a53dfebd398d02a53a5369a951773d7c6adce
John Blunts
0
280
726
576
2023-11-06T16:47:06Z
BEELETH
2
wikitext
text/x-wiki
{{Infobox|above=John Blunts|image=[[File:Johnpink.png|200px|placeholder text]]|header1=Creation and development|label2=Development|data2=* September 30, 2022 (created)|label3=Creator(s)|data3=[[BEELETH]] (creator/designer)|header4=Character information|label5=Real name|data5=Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts|label6=Other names|data6=* John Blunts
* Johnny Blunts
* Mr. Blunts|label7=Genders and labels|data7=Unconfirmed gender (masculine), himbo|label8=Pronouns|data8=* he/him
* it/its|label9=Orientation|data9=Unconfirmed|label10=Species|data10=[[Furry]] llama|header11=Plot information|label12=Space|data12=[[Uncharted Space]]}}
'''John Blunts''', known formally as '''Jonathan Awesomesauce Yolo Swaggington Smoking Doobie Awesome Joint Blunts''', is the famous and wealthy founder and owner of an alternate-universe [[4Kids Entertainment]]. He is also the wielder of the [[Burning Super Death Sword]].
He was once in a relationship with [[Cream]], and has a son named [[Barry Normal]].
== Personality ==
Blunts is naturally charismatic despite his bumbling, foolish, and otherwise idiotic nature. To most, he is a pleasure to be around, though some may find his unintentional egoism to be grating.
He is quite oblivious to a lot of the things that go on around him.
== Appearance ==
John Blunts is a [[furry]] llama with long, shaggy two-toned wool that is longest on his legs and head. He is constantly grinning and has half-lidded eyes; under his smile is a short, beard-like extension of his facial wool. He has a dog-like tail that also tends to wag when he is excited.
He has a cartoonishly muscular build with an exaggerated upper body and a thinner lower body.
On his feet, he has cloven hooves and a single toe in the back. His hands are also cloven hooves with a single thumb. His fingers and toes are drawn as entirely covered in hoof material rather than partially.
He is almost always seen wearing the same outfit consisting of a shirt with rolled-up sleeves, a vest, a tie, a belt, and bandages. It's very rare for him to wear pants or any actual clothing on his lower body.
=== Other design notes ===
He can be portrayed in any palette with any clothing, but his [[palette]] or certain elements can vary somewhat across certain alternate designs or certain artworks.
* His main two palettes are a "pink lemonade" palette and a more creamy-colored palette.
** The Burning Super Death Sword's palette does not inherently change based on John's palette.
* He was originally intended to wear black, high-end sunglasses, but they were dropped from his design. However, he can still be drawn wearing them though they may look awkward in some styles.
* The arm hair drawn over his forearm wool is ''strongly'' recommended to be drawn unless it would look out of place in a certain art style.
* Though it's okay to draw him with the biologically correct amount of fingers and toes, it is preferred that he only has 3 digits on each foot and hand.
== Creation and development ==
Originally, John Blunts was created as a Roblox avatar.
== In-universe history ==
Not much about his life prior to founding 4Kids Entertainment is known.
=== Founding of 4Kids Entertainment ===
TBA
== Abilities ==
# '''Bending the laws of reality:''' As John Blunts has such a cartoony presence, he is able to influence and manipulate nearly anything with minimal effort. He has some control over what he is able to affect, but it is mostly determined by how funny it is in the moment and whether or not it must be censored.
#* The definition of "funny" is not entirely known for sure when it comes to his reality-bending power.
#** It can be assumed to be low-brow.
#* His passive censorship ability mostly just affects swearing, weapons, drugs, alcohol, blood, sexual content, and death.
#** Despite its drug references, his name is always immune to censorship.
#** Guns will actually disappear if they are brought anywhere near him, or if they are in a position that could harm anyone near him.
#** If he or someone in his ability's range is to die, they shall instead be sent to the [[Dark Side]].
#** Swords physically cannot be used to directly cut organic beings in his range. If they are to be used as a weapon at all, they must be used in combat that does not require physical contact. For example, "air slashes" are safe to use.
# '''Wielding the Burning Super Death Sword:''' John Blunts is one of the only people who is able to wield the Burning Super Death Sword; this is partially because he is too stupid to be affected by the weapon's mind-controlling manipulation and also because the sword has just given up on trying to use its power on him.
# '''Being a "main character":''' Despite not being an overly prominent character in the [[Uncharted Space]]'s lore, many events in his life are in his favor in some way or will lead to some significant changes to his development as a person.
== Gallery ==
''<small>[[John Blunts/Gallery|Click here to see John Blunts' full gallery.]]</small>''
=== Recognized palettes ===
<gallery>
File:Johnpink.png|"Pink lemonade" palette
File:Johnwhite.png|"Cream" palette
</gallery>
=== Reference images ===
TBA
== Trivia ==
* Despite its name, the cream palette is not named after Cream, but rather just the colors used.
* The bandages on his legs were a last-minute design choice, and he was originally going to wear pants.
=== Name origin ===
John Blunts was given his first name because John feels very generic, meanwhile his last name was chosen because it sounded fun to say right after his first name. As well as that, it's an ironic drug reference given his censorship ability and kid-friendly career.
All of his middle names were chosen at random based on what sounded the most stupid.
== Related pages ==
* [[Cream]], John Blunts' dramatic foil
[[Category:Characters]]
[[Category:Stubs]]
[[Category:Furries]]
a13179372a7d1836c68657005ee72a2a16f90ffd
File:Ambrosia.png
6
357
727
2023-11-13T03:00:12Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Ambrosia
0
358
728
2023-11-13T04:09:18Z
BEELETH
2
shes real
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Ambrosia|image=[[File:Ambrosia.png|200px|Ambrosia]]}}
'''Ambrosia''' (formally known as '''Ambrosia of [[Greenwood]]''') is one of the [[fairy]] representatives within the [[Forest Ring Alliance]].
== Personality ==
TBA
== Appearance ==
Ambrosia is a light blue cauda with long, pink hair that swoops upwards towards the ends. Her ears droop further down than most fairies' ears do, and she is notable for having curled, golden horns (rather than white nubs that many caudas emerge with). Her eyes and eyelashes are pink to match her hair. She has leaf-like wings that appear darker the further they extend from her back. Like most other fairies, she has three fingers and a thumb on each hand.
Her usual outfit consists of a skirt of pink petals, several golden cuffs, and a cotton boll. Her skirt is covered almost entirely in vanilla [[fairy glaze]]; the same glaze was used to decorate the ray flowers upon her staff. While it is mainly decorative, it also aids in casting sleep spells and other similar [[magic]]. The cuffs upon each of her wrists, as well as the band of her skirt, are made of incredibly soft gold. Around her neck is a puff of cotton with two leaves that resemble a bow.
In combat as well as formal situations, she wields an enchanted, Astaracae-like plant as that has been turned into a staff. While it is visibly damaged, it is still incredibly sturdy. It's also very efficient; it gathers energy from the sun and the ground it is placed on. Any energy it collects is stored in the swirly, yellow capitulum.
== Creation and development ==
TBA
== In-universe history ==
TBA
== Connections ==
=== Alder ===
TBA
== Abilities ==
# TBA
== Gallery ==
TBA
== Trivia ==
* TBA
=== Name origins ===
Ambrosia mostly gets her name from the ambrosia of Greek myths, the food of the gods.
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Fairies]]
[[Category:Uncharted Space]]
f1fbaefa54b446188e98c7fcc7a159e1667af63a
File:Meowstandingthere.png
6
359
729
2023-11-13T04:11:08Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Woolf
0
360
733
2023-11-14T02:24:28Z
BEELETH
2
Created page with "{{Infobox|above=Woolf}} placeholder text [[Category:Characters]] [[Category:Uncharted Space]] [[Category:Bunjeecorp]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]]"
wikitext
text/x-wiki
{{Infobox|above=Woolf}}
placeholder text
[[Category:Characters]]
[[Category:Uncharted Space]]
[[Category:Bunjeecorp]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
4eb06ed95ebc56fb380a4ffead9bc36950931d50
738
733
2023-11-14T02:45:30Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Woolf|image=[[File:Woolfposin.png|200px|Woolf]]|caption=Design as of 2021|header1=Creation and development|label2=Development|data2=* December 2021 (created)
* uncertain (written)}}
'''Woolf''' (officially known as '''XM-01''') is a multi-purpose robot created by [[Bunjeecorp]]; she is also the first of the special model series, numerically succeeded by [[XM-02]] but officially succeeded by [[XM-04]].
Prior to its discontinuation, her associated assistant model was [[AM-01]].
== Personality ==
TBA
=== Voice ===
TBA
== Appearance ==
TBA
=== Functionality ===
Compared to newer special models, Woolf has less physical flexibility in exchange for greater sturdiness.
== Creation and development ==
TBA
== In-universe history ==
TBA
== Abilities ==
# TBA
== Gallery ==
TBA
== Trivia ==
* Woolf is the first character to have a complete original theme song.
** However, Mephistopheles had a theme song in progress at some point in the past.
=== Name origin ===
Woolf's name is a portmanteau of "wool" and "wolf", as her design takes inspiration from both sheep and wolves.
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Uncharted Space]]
[[Category:Bunjeecorp]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
88d9fc98b629f15777350b9c9b865720bf079e7a
739
738
2023-11-14T03:16:29Z
BEELETH
2
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Woolf|image=[[File:Woolfposin.png|200px|Woolf]]|caption=Design as of 2021|header1=Creation and development|label2=Development|data2=* December 2021 (created)
* uncertain (written)}}
'''Woolf''' (officially known as '''XM-01''') is a multi-purpose robot created by [[Bunjeecorp]]; she is also the first of the special model series, numerically succeeded by [[XM-02]] but officially succeeded by [[XM-04]].
Prior to its discontinuation, her associated assistant model was [[AM-01]].
== Personality ==
TBA
=== Voice ===
TBA
== Appearance ==
TBA
=== Functionality ===
Compared to newer special models, Woolf has less physical flexibility in exchange for greater sturdiness.
== Creation and development ==
Woolf's original concept was created in December of 2021 as a "response" to a themed scenario from one of [[BEELETH]]'s friends, and was momentarily used as one of BEELETH's sonas.
On June 15, 2023, Beeleth started and completed BADSIDE.
== In-universe history ==
TBA
== Connections ==
=== Etude ===
While Woolf didn't get to interact much with Etude during their time in Bunjeecorp, he has strong opinions regarding her.
=== Canta ===
TBA
=== Netty ===
TBA
=== Bunjees ===
TBA
== Abilities ==
# TBA
== Gallery ==
TBA
== Trivia ==
* Woolf is the first character to have a complete original theme song.
** However, Mephistopheles had a theme song in progress at some point in the past.
=== Name origin ===
Woolf's name is a portmanteau of "wool" and "wolf", as her design takes inspiration from both sheep and wolves.
== Related pages ==
* TBA
[[Category:Characters]]
[[Category:Uncharted Space]]
[[Category:Bunjeecorp]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
a9efb88501ebcedfe4f8d2fbe071c39a0df8d23d
File:Kingofbeasts.png
6
361
734
2023-11-14T02:40:35Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Anemoia.png
6
362
735
2023-11-14T02:41:11Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Giant.png
6
363
736
2023-11-14T02:41:45Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Woolfposin.png
6
364
737
2023-11-14T02:42:18Z
BEELETH
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
King Beeleth
0
153
741
307
2023-11-25T02:09:52Z
BEELETH
2
Replaced content with "placeholder page; sorry if you're here from beeleths toyhouse page :/ [[Category:Pride of the Peacock Angel]] [[Category:Characters]] [[Category:Created by BEELETH]] [[Category:Designed by BEELETH]]"
wikitext
text/x-wiki
placeholder page; sorry if you're here from beeleths toyhouse page :/
[[Category:Pride of the Peacock Angel]]
[[Category:Characters]]
[[Category:Created by BEELETH]]
[[Category:Designed by BEELETH]]
22d0e802143d67c0d861bedc5d9542bac095b283
Toons
0
365
742
2023-11-28T04:01:43Z
BEELETH
2
Redirected page to [[Absurds]]
wikitext
text/x-wiki
#REDIRECT [[Absurds]]
d96e3b291688972858f904a62293a56c5d179f10
Absurds
0
366
743
2023-11-28T04:53:56Z
BEELETH
2
Created page with "{{Stub}}{{Infobox|above=Absurds}} '''Absurds''' are a "[[species]]" native to the [[Uncharted Space]], though they may potentially appear elsewhere in [[Vast Space]] for whatever reason. Their appearances vary wildly, but absurds are defined by being strange and out of place compared to other species. Their appearance may be noticeably much simpler than what they are meant to "represent", they may have unusual abilities and traits, or perhaps their appearance and abilit..."
wikitext
text/x-wiki
{{Stub}}{{Infobox|above=Absurds}}
'''Absurds''' are a "[[species]]" native to the [[Uncharted Space]], though they may potentially appear elsewhere in [[Vast Space]] for whatever reason. Their appearances vary wildly, but absurds are defined by being strange and out of place compared to other species. Their appearance may be noticeably much simpler than what they are meant to "represent", they may have unusual abilities and traits, or perhaps their appearance and abilities are both strange.
They aren't exactly a species, but it's difficult to describe what they are.
== In-universe history ==
It's not known for sure when absurds first started to appear, but around the founding of [[Old Pokopoko]], people became more aware of their existence. At that time, they were assumed to be curse-related somehow and people were wary of them; however, this fear seemed to disappear over the years, and absurds were eventually accepted into Pokopokan society. As for other [[locations]], their interactions with absurds were ironically ''mundane'' enough to avoid documentation until recent years.
Absurds usually land jobs in entertainment due to their inherent comic abilities. For example, [[John Blunts]] is a popular [[New Pokopokan]] actor who runs [[4Kids Entertainment]] and has his own show.
== Classification of absurds ==
Absurds are classified as a species rather than a condition because there isn't really a way to "contract/cure absurdism". It's also possible to be a half-absurd, which wouldn't really make sense if it were considered a condition.
==== Classification within absurds ====
There are many types of absurds, but it has been determined that there are three major types of absurds (though there is often overlap between these):
# '''Absurd in appearance:''' An absurd may have an unusual appearance that varies depending on a viewer's perspective, like face/eye placement. For example, some absurds have ears that appear the same at all angles, or some may have their face fully visible at angles that are impossible on non-absurds.
# '''Absurd in ability:''' Absurds are unique for having abilities that rely upon their comedic potential.
# '''Absurd in personality:''' Absurds will usually have personalities and behaviors that stand out from non-absurds, like performing illogical things and treating them as if they are normal.
Someone may be considered an absurd if they fit within at least one of these categories, but obviously these types can apply to non-absurds. As well as this, a character may appear to be an absurd based on how they are drawn by an artist due to their style. If a character is not obviously an absurd, it's best to rely upon established information about them to know if they are one or not.
Within Vast Space canon, characters are usually noted by other characters to be an absurd or to have their properties.
== Species merits ==
The individuals within any species will vary, so this list is not to be taken at face value. Rather, this is a general representation of what absurds are biologically predisposed to, or are otherwise known for.
=== Strengths ===
* Absurds can defy logic and even life/death itself.
** One could argue that their abilities rival even those of [[deities]] if used correctly (and if used in the right situations).
* [[Kineticism]] appears to be more common in absurds than many other species, and the kinetic potential of absurds also tends to be very high.
* Their comedic abilities may help them escape dangerous situations in ways impossible for non-absurds.
** For example, they can easily untie ropes, slip through cracks, or dodge incoming attacks if it has potentially funny results.
* Some absurds are fully aware of the world around them, and can address viewers, readers, and sometimes even deities.
* Absurds can successfully hybridize with many other species and produce fertile offspring.
** If someone has an absurd ancestor, they may inherit some of their abilities (even if they don't appear absurd themselves).
** Their offspring may not resemble them at all.
* They can make unnatural sounds or expressions easily.
=== Weaknesses ===
* An absurd's abilities may make it difficult to function in normal daily life.
** Some absurds are censored by mysterious forces and cannot say certain things or use certain objects.
** It may be hard for them to predict their own abilities, and they may misjudge what they are capable of.
* They may be weak to some objects or forms of kineticism that don't normally affect other people.
* Some absurds cannot be taken seriously, despite their attempts to be serious.
=== Other species-related notes ===
* Absurds tend to be animals and people, but may also be objects, plants, or other things entirely.
* They aren't always anthropomorphic or capable of speech, but most are.
== Trivia ==
* [[John Blunts]] was the first absurd to be established in Vast Space canon.
** Additionally, [[Barry Normal]] (John Blunts' son) was the first half-absurd to be established.
=== Etymology ===
Absurds get their name from their logic-defying abilities, appearances, and behaviors.
They were also temporarily referred to as "toons", as they are comparable to cartoon characters.
== Related pages ==
* TBA
[[Category:Species]]
[[Category:Uncharted Space]]
[[Category:Absurds]]
fd4e3509b70ecb3b737b035d2dc602d9d26513a9
User:BEELETH
2
163
744
662
2023-11-28T05:17:14Z
BEELETH
2
wikitext
text/x-wiki
howdy howdyhowdy{{Infobox|above=Halberd Aswang|image=[[File:Halbrown.png|200px|alt=Halberd with brown hair]]|caption=The REAL ONE!!!!|header1=Descriptors|label2=Other names|data2=* Al
* Hal
* Halb
* Halby|label3=Genders and labels|data3=Epicene, intersex, bear|label4=Pronouns|data4=* they/them
* he/him
* it/its
* that one/that one's|label5=Orientation|data5=Autosexual, aromantic, polyamorous|label6=Species|data6=[[Human]], but evil}}
== who that little dude on the screen ==
thats me!!!!!!!!! halberd!!!!!!!!!!!!!!!! idiot
== about me ==
basement-dwelling neckbeard in spirit. most evil little man in the world
=== likes ===
* yoeko (pls join r/YoekoKurahashi)
* dj technorch
* pokemon
* klonoa
* rhythm games
=== dislikes ===
* olives
* cleaning
* working on the fucken WIKI!!! GOD DAMN!!!!!!!!!!
=== other things about me ===
im good at smash and i like playing as incineroar and pink villager. pretty good at muse dash too
== about my works ==
i make things that i like and other people also tend to like my stuff and i think thats pretty cool
=== achievemnet and porfolo ===
halberd haves many achievemnts in his life..........
* former character artist and designer for maxein (as of this edit the project has been retired)
* made some emojis and stickers for the be an alien: renewal discord server
* emoji artist for the shark army discord server
* open source objects contributor + character cameo in short 1 (das [[wormshroom]] babey!!!!)
==== trivial achieves ====
* met rockhopper in og club penguin
* neopets + roblox player of over 10 yrs
* one of the .gg/garfield 10k event jackbox winners
* people like my art and i have been featured a few times in various things
** featured in the nintendo switch news feed for ultimate chicken horse twice
** my art is in the lost media wiki fanart section
** my art was featured momentarily in the 24/7 kikuo radio stream before that died too
* people like using my stuff and i think thats fun
** original creator of some of those clonable mlp skins on manyland
*** shoutout to coffeebug for using my stuff beyond ml we love to see it
** made some other popular-ish stuff on manyland b4 it died (tilesets, bunjees, anvil, etc)
* i can beat my mom at tetris thats cool i think
== trivia ==
* #00FF00
=== name origin ===
halberd is wepon. aswang is aswang. you a jokester?
== contact ==
see beeleth.carrd.co or beeleth.neocities.org
f71855dda2cb1dd45eb7f37afc5ba3e679afc8bd